【发布时间】:2017-05-18 07:05:24
【问题描述】:
自从我使用 Varnish Cache 解决方案以来,只要配置与安装后的配置大致相同,一切都很好。
但现在我喜欢用 Varnish 做更多的事情。目前我正在为我的服务器使用以下设置:
访问者 -> CloudFlare -> HaProxy -> Varnish(单独的服务器)-> Apache2 内容。
我想知道的是,我如何能够制作正确的 vcl 脚本来接受来自端口 B 上的 ip A 的传入请求,并将其重定向到端口 D 上的 ip C。(而且不止一次。)
例子:
Default.Varnish 像这样很好地工作:
DAEMON_OPTS="-a :8085,:8087 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,768m"
但是现在关于 Varnish.Default :
backend default_1 { .host = "11.22.333.444"; .port = "8885"; }
backend default_2 { .host = "11.22.333.444"; .port = "8887"; }
我尝试了这样的事情:
sub vcl_recv {
if (server.port == 8885) { set req.backend = default_1; }
if (server.port == 8887) { set req.backend = default_2; }
}
(请注意,这两个请求都将发送到 相同的传出服务器。只是端口不同!)
对 Varnish 有足够了解的人已经知道我想要什么。我只是喜欢使用 Varnish 来代理基于不同端口的单独“通道”。
【问题讨论】:
-
尝试设置
req.backend_hint而不是req.backend。
标签: varnish haproxy varnish-vcl