使用 Varnish 和 nginx 强制使用 WWW

使用 Varnish 和 nginx 强制使用 WWW

我正在尝试弄清楚如何在 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);

}

相关内容