2014-01-29 25 views
1

我有2个文件proxy_passNginx的proxy_pass,定义一个不匹配的情况?

server { 
    listen 80; 
    server_name www.domain1.fr; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header HOST $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://127.0.0.1:2368; 
     proxy_redirect off; 
    } 
} 

server { 
    listen 80; 
    server_name www.domain2.fr; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header HOST $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://127.0.0.1:2369; 
     proxy_redirect off; 
    } 
} 

他们都做工精细。现在

如果我去这个服务器通过另一个域名,如(我的目标相同的IP地址 DNS服务器上定义)。 www.domain3.fr,而不是404,我的结果与www.domain2.fr相同!

我猜这是因为最后的location /,但是如果域名与server_name不一样,我该怎么办404错误?

回答

1

我已经回答了这么多次这个问题我正在想办法让它成为通用的,所以当有问题时我可以分享它。

这里的其他答案,如果你想看看它

,你可以在任何一个为什么会这样看,在这参考链接How nginx processes a request

简单的答案是一个小的服务器块,以防止它

server { 
    listen 80 default_server; 
    # return a code maybe or do any thing 
    return 404; 
} 

当然重新加载nginx之后,以反映设置。

+0

是的,我想这是一个很常见的情况。感谢您的链接和片段! – grena