清漆没有为域名的www版本而努力

时间:2013-05-07 12:26:03

标签: varnish varnish-vcl

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

http://pastebin.com/CF37isis

1 个答案:

答案 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);
    }
}