0

我在运行两个不同域上的两个站点的服务器上设置了清漆,在两个域前面没有 www 的情况下,清漆工作完美,我在这个 pastebin 中附加了 vcl 文件,我想这是某个地方的基本错误配置,但我可以'不知道在哪里 - 有人知道解决方案吗?

http://pastebin.com/CF37isis

4

1 回答 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 回答