【问题标题】:varnish not kicking in for www-version of domain清漆不适用于域名的 www 版本
【发布时间】:2013-05-09 22:56:49
【问题描述】:

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

http://pastebin.com/CF37isis

【问题讨论】:

    标签: varnish varnish-vcl


    【解决方案1】:

    对我来说,配置看起来不错,无论有/没有 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);
        }
    }
    

    【讨论】:

    • 强制总是非 www 版本的配置看起来如何? :-)
    • 在我上面的回答中添加了一个重定向示例。
    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 2015-08-18
    相关资源
    最近更新 更多