nginx 不尊重 server_name 值

var*_*ble 3 nginx

server{
    ..
    server_name some_other_domain_name.com;
    ..
}
Run Code Online (Sandbox Code Playgroud)

我已通过 godaddy 将我的域名映射到我的虚拟机的公共 IP。

当我在浏览器中输入域名时,它就可以访问虚拟机上托管的网站(通过nginx)。但是,我预计 nginx 不会允许该请求,因为 server_name 属性设置为 some_other_domain_name.com

nginx 不检查 server_name 属性吗?

Ale*_*Ten 5

Digital Ocean Understanding Nginx Server and Location Block Selection Algorithms上对 nginx 如何选择服务器和位置块来处理请求有很好的解释。

简而言之,nginx 首先根据指令选择最佳匹配listen。并且仅检查server_name是否有多个匹配项。在这种情况下,如果没有server_name匹配,那么它会选择default阻止。默认块要么声明为default_serverinlisten指令,要么声明为第一个。