我正在尝试为两个域运行Varnish,并且每个域在不同的IP上运行,并使用自己的.VCL文件进行配置。 我成功编写了所有配置文件,因此Varnish将监听每个IP;这样Apache就会在两个端口上监听Varnish。 一切看起来都很棒,但是! 当我在浏览器中加载第一个域时,它将(302)转发到第二个域。 我之前的设置是作为第一个域工作,没有Varnish,第二个域使用Varnish。 任何人都可以建议解决方案或调试方法。 10x
答案 0 :(得分:0)
我有这个设置没有问题。我正在使用一个vcl文件(两个站点/后端的逻辑几乎相同)。服务器有多个ip,apache全部使用它们,它在不同的ip上服务于不同的站点。一些ip也有虚拟主机。
首先,检查您的Apache安装是否有效以及没有重定向。
curl -I -L http://hostname1.com
其次,在你的vcl中,定义后端(第一个例子是如果backend1是虚拟主机,则示例2是后端2不是vhost并且可以通过此ip访问)
backend backend1 {
.host = "127.0.0.1";
.port = "81";
.host_header = "hostname1.com";
}
backend backend2 {
.host = "192.168.1.1";
.port = "80";
}
第三,你在vcl_recv中会有这样的东西:
if (req.http.host ~ "^(www\.)?hostname1\.com$") {
set req.http.host = "hostname1.com";
set req.backend_hint = backend1;
}
elseif (req.http.host ~ "^(www\.)?hostname2\.com$") {
set req.http.host = "hostname2.com";
set req.backend_hint = backend2;
}
那就是它。