我在运行两个不同域上的两个站点的服务器上设置了清漆,在两个域前面没有 www 的情况下,清漆工作完美,我在这个 pastebin 中附加了 vcl 文件,我想这是某个地方的基本错误配置,但我可以'不知道在哪里 - 有人知道解决方案吗?
问问题
315 次
1 回答
0
对我来说,配置看起来不错,无论有/没有 www,你都不应该遇到任何麻烦。您确定 DNS 指向您的 www 清漆服务器吗?当然,您的应用程序也有可能采取不同的行为并在 www 请求上设置额外的 cookie/标头。
此外,您应该真正将 www/non-www 之一重定向到另一个,以便始终只使用一个但两者都有效(也可以使用 varnish 轻松完成,或者也可能在您的 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);
}
}
于 2013-05-09T09:05:07.180 回答