我有两个不同的端口上的两个服务的多个虚拟机。 我想通过http:// virtual_url_1:80和http:// virtual_url1:8080等URL访问这些服务,以此类推。
我使用清漆将stream量从硬件节点中继到虚拟节点。 我可以区分virtual_url_1和virtual_url_2,例如:
if (req.http.host == "virtual_url_1") { set req.backend = virtual_node_1; remove req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; if (req.request == "POST") { return(pipe); } return (lookup); }
对于端口的区别,我已经看到,在/ etc / default / varnish上,varnish可以在不同的端口上监听
DAEMON_OPTS="-a 0.0.0.0:80,0.0.0.0:8080 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G"
但是现在,一旦被拦截,问题是将来自端口80的stream量转发到后端80,将来自端口8080的stream量转发到后端8080。
有一个req.http.hostvariables,我正在寻找一个req.port像一个来执行此目的。
任何人都可以提供一些build议吗? 这甚至有可能吗? 还是应该运行两个不同的清漆实例(第一个在端口80上听,第二个在端口8080上),我宁愿避免这种情况?
非常感谢!
在你的VCL中使用server.portvariables,它应该做的伎俩。
你不应该运行两个清漆的实例!
有关更多variables和信息,请参阅man 7 vcl 。