2017-06-28 92 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; 
    ... 
}