2014-01-20 73 views
0

我有我的升級配置的設置,像這樣:Nginx的子域的子域訪問其未配置爲

server { 
listen 80; 
server_name staging.domain.com; 
root /var/www/staging/public; 

和我的生產配置的設置是這樣的:

server { 
listen 80; 
server_name www.domain.com; 
root /var/www/production/public; 

沒有其他重定向或任何東西。

問題是,即使我禁用生產配置,我仍然可以訪問www.domain.com上的登臺服務器。

爲什麼它不被限制到其配置的子域?

+0

看到這個問題:http://stackoverflow.com/questions/21234600/nginx-subdomain-accessible-on -subdomain-its-not-configured-for – Dayo

+1

這就是這個問題.. – Nicekiwi

回答

0

我以前

回答這樣一個類似的問題,讓我與nginx怎麼主機相匹配的小解釋做起,從how nginx processes a request

引用在此配置nginx的測試,只有請求的頭字段 「主機」確定請求應該路由到哪個服務器。如果 其值與任何服務器名稱都不匹配,或者請求中沒有包含該頭字段,則nginx會將請求路由到此端口的默認服務器 。

如果禁用主服務器的你只有1點左右,所以nginx的請求傳遞給它,如果你想避免這種情況,你需要添加一個主服務器,以阻止所有未配置域

server { 
    listen 80 default_server; 
    return 403; 
} 

然後運行

sudo service nginx reload 

然後你設置

+0

啊,真好。謝謝:) – Nicekiwi

+1

對不起,我使用'返回304',而我的意思是返回'403'請修復你的配置,如果你用'304' –