Nginx仅将根域重定向到www,而不是子域

时间:2017-06-28 06:41:23

标签: nginx proxy wildcard reverse-proxy wildcard-subdomain

目前,我使用以下设置将非www域重定向到www域,并且它正常运行:

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

server {
    listen 80;
    server_name www.example.com;
    location / {
        proxy_pass http://www.example.com:8888;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

但是,现在我想允许使用通配符子域,但似乎所有子域都被重定向到www.domain.com。所以我的问题是我怎样才能使它只将根域重定向到www并排除所有其他子域?感谢。

1 个答案:

答案 0 :(得分:1)

第一个服务器块也是隐式默认服务器,这意味着任何与www.example.com不匹配的域名都将由它处理。

如果您希望第二个服务器块处理除example.com以外的所有域,则可以通过向{添加default_server选项显式地将其设为默认服务器 {1}}指令。有关详细信息,请参阅this document

例如:

listen