我在两个不同域上运行两个站点的服务器上设置清漆,varnish在两个域前面没有www的情况下完美,我在这个pastebin中附加了vcl文件,我想这是某个地方的基本错误配置,但是我无法弄清楚在哪里 - 有人知道解决方案吗?
答案 0 :(得分:0)
对我来说,配置看起来很好,你不应该有/没有www的麻烦。你确定DNS指向你的varnish服务器的www吗?当然,您的应用程序也可能采取不同的行为,并在www请求中设置额外的cookie /标题。
此外,您应该将www / non-www中的一个重定向到另一个,以便始终只使用一个(但也可以使用清漆,或者也可能在DNS提供程序设置中)。
varnish中的重定向可能看起来像这样(不需要在当前的vcl_recv / vlc_error中添加,并且不应该添加新块):
sub vcl_recv {
if (req.http.host == "www.somedomain.com") {
set req.http.x-Redir-Url = "http://somedomain.com" + req.url;
error 750 req.http.x-Redir-Url;
}
if (req.http.host == "www.someotherdomain.com") {
set req.http.x-Redir-Url = "http://someotherdomain.com" + req.url;
error 750 req.http.x-Redir-Url;
}
}
sub vcl_error {
if (obj.status == 750) {
set obj.http.Location = obj.response;
set obj.status = 301;
return (deliver);
}
}