2014-01-20 76 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' –