在此说明一下,本文提到的Varnish版本是6.2.1, vcl 4.0
查看你的varnish版本,用如下命令varnishd -V
backend A_backend {
.host = "127.0.0.1";
.port = "8081";
}
backend B_backend {
.host = "127.0.0.1";
.port = "8080";
}
在sub vcl_recv中加入
if (req.http.host ~ "a.com") {
set req.backend_hint = A_backend;
} elsif (req.http.host ~ "b.com") {
set req.backend_hint = B_backend;
}
如果上面的配置不起作用,你应该检查一下Nginx是否设置了host 在nginx.conf中加入如下配置
proxy_set_header host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:6081;
先用ps aux | grep "varnishd"
获得pid
然后kill -9 pid
最后用varnishd -f /etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:801 -a 0.0.0.0:6081
大功告成!