2017-06-28 93 views
1

目前我使用以下设置为不带www的域名重定向到www域名和它的正常工作:Nginx的重定向只有根域而不是子域名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

第一服务器块也隐含默认服务器,这意味着不匹配www.example.com任何域名将通过它进行处理。

如果你会喜欢的第二个服务器块来处理,除了example.com所有域,你可以把它的默认服务器明确,通过添加default_server选项的listen指令。详情请参阅this document

例如:

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

server { 
    listen 80 default_server; 
    ... 
}