我正在尝试弄清楚如何在 Varnish 中强制 WWW 只针对一个域。我看到了这个答案删除 WWW 但我不知道如何翻译它来强制它。
编辑:澄清一下,我的 nginx 配置运行正常。只是在我添加了 Varnish 之后才开始发生这种情况。我找到了罪魁祸首并回答了我自己的问题。
答案1
如无特殊需要,不要使用“if”。如果是邪恶的! 正确的方法是......
server {
server_name somedomain.com;
return 301 http://www.somedomain.com$request_uri;
}
server {
server_name www.somedomain.com;
# typical lines
# ...
}
答案2
以下代码片段适用于 Nginx 配置:
if ($host !~* ^www\.) {
rewrite ^(.*)$ http://www.$host$1 permanent;
}
答案3
我需要从 Varnish 中的 vcl 文件中删除它。
if (req.http.host ~ "^(www\.)?domain\.com$") {
set req.http.host = "www.domain.com"
return (lookup);
}