我想将varnish配置为我的某个网站的缓存,以暂时重载。
我设置了几个带有清漆的虚拟机,应该缓存我的主网站。 当我的主服务器托管多个网站时,apache服务器被配置为虚拟主机服务器。
所以我在default.vcl中定义了主网站域名而不是IP地址,希望varnish将请求正确地传播到正确的apache虚拟主机。 但它似乎只是使用IP地址,并缓存在向我的主网站IP地址发送http请求时出现的apache默认页面。
有没有办法配置清漆,所以它使用正确的URL调用我的后端,而不是IP:端口?
我的清漆配置如下:
backend default{
.host = "www.myvhost.com";
.port = "80";
}
而不是:
backend default{
.host = "my.ip";
.port = "80";
}
因为我需要varnish实例:http://www1.myvhost.com,http://www2.myvhost.com ...来缓存主服务器http://www.myvhost.com 但不是http://myip:80/
感谢您的帮助
答案 0 :(得分:0)
你可能认为清漆是反向代理而不是apache
由于我的主服务器托管了几个网站,因此apache服务器是 配置为反向代理。
您可以在default.vcl的后端定义中配置主机名 https://github.com/mattiasgeniar/varnish-4.0-configuration-templates/blob/master/default.vcl
除非您的服务器上有多个IP,否则所有流量都会指向所有vhost的清漆。
我认为您正在寻找的是针对单个域的掠夺查询。您可以通过在主机上进行过滤来实现此目的。
sub vcl_recv {
if (req.http.host ~ "(www\.)?yourdomain\.com") {
return(pass);
}
}
不在您网域上的所有流量都将直接传递到后端而不进行查询