Nginx - 标题中没有WWW

时间:2018-04-16 13:56:16

标签: nginx

我有一个http / https配置,但有一个问题,我们的营销团队询问有关URL中没有www的问题。当用户导航到example.com时,该节将它们重定向到https://www.example.com,但如果他们输入https://example.com该网站加载但网址中现在有www。这显然搞乱了SEO统计数据等。 我尝试在HTTPS服务器条目上添加重定向,但它最终只会引发重定向循环。 我在下面粘贴了配置。我不完全确定为什么会这样做我会感激任何想法。

server {
    listen 443 ssl http2;

    server_name .example.com;

    ############################################

    Tested redirect not working
    return 301 $scheme://www.example.com$requets_uri;

    ##################################################

    <ssl cert config here>

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;

    location / {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass "http://127.0.0.1:3000";   
    }    
}

server {
    listen 80;
    server_name .example.com;
    return 301 https://www.example.com$request_uri;    
} 

2 个答案:

答案 0 :(得分:1)

尝试使用:

# Main server
server {
    listen 443 ssl http2;
    server_name www.example.com;
    ...
}

# Redirects all subdomains to www.example.com
server {
    listen 80;

    # Uncomment if needed        
    # listen 443 ssl http2;
    # <ssl cert config here>

    server_name *.example.com;
    return 301 https://www.example.com$request_uri;    
} 

答案 1 :(得分:0)

伊万,

我重读了你的评论,我实际上没有按照你的建议实施它。我编辑了我的配置以反映略有不同,因为我正在监听ssl,因为我有一个单独的80节重定向节。

这解决了我的问题,谢谢你的帮助。