我正在尝试将没有'www'的请求重定向到Varnish中的www.mydomain.com(WordPress网站),但由于某种原因,只能创建无限循环的重定向。在我的Varnish vcl中我有:
sub vcl_recv {
if (req.http.host == "example.com") {
set req.http.host = "www.example.com";
error 750 "http://" + req.http.host + req.url;
}
...
和
sub vcl_error {
if (obj.status == 750) {
set obj.http.Location = obj.response;
set obj.status = 301;
return(deliver);
}
}
(这取自我在网上看到的例子)。在Fiddler中,回应似乎表明Varnish做了正确的事情:
HTTP/1.1 301 http://www.example.com/
Server: Varnish
Location: http://example.com/
Accept-Ranges: bytes
Date: Wed, 17 Dec 2014 12:42:56 GMT
X-Varnish: 1488505994
Age: 0
Via: 1.1 varnish
Connection: close
但是,它会一直循环直到浏览器放弃。我在俯瞰什么?任何提示都非常感激。
托比
答案 0 :(得分:1)
似乎你正在使用Varnish< 4,因为4中的语法有些不同。
但问题是,即使你的vcl似乎是正确的,日志似乎也显示相反的事情,http://www.example.com/被重定向到http://example.com/的请求,后来你说你的主要域名是www。 vcl和wordpress不同意主域名。
确保您正在重新加载并使用正确的vcl,并确保您已在vcl中编写了正确的主机并且该wordpress同意。
如果找不到问题,请显示varnishlog跟踪。