server{
..
server_name some_other_domain_name.com;
..
}
我已通过 godaddy 将我的域名映射到我的 VM 的公共 IP。
当我在浏览器中输入域名时,它就可以访问托管在 VM 上的网站(通过 nginx)。但是,我期望 nginx 不允许该请求,因为 server_name 属性设置为 some_other_domain_name.com
nginx 不检查 server_name 属性吗?
server{
..
server_name some_other_domain_name.com;
..
}
我已通过 godaddy 将我的域名映射到我的 VM 的公共 IP。
当我在浏览器中输入域名时,它就可以访问托管在 VM 上的网站(通过 nginx)。但是,我期望 nginx 不允许该请求,因为 server_name 属性设置为 some_other_domain_name.com
nginx 不检查 server_name 属性吗?
有一个很好的解释 nginx 如何选择服务器和位置块来继续请求 Digital Ocean理解 Nginx 服务器和位置块选择算法。
简而言之,nginx 首先根据
listen
指令选择最佳匹配。并且server_name
仅检查是否有多个匹配项。在这种情况下,如果没有server_name
匹配,那么它将选择default
块。默认块要么声明为default_server
inlisten
指令,要么声明为第一个。您尚未共享完整的 nginx 配置,因此这是对配置中缺少的内容的猜测。
nginx 总是为每个请求提供一些东西。如果没有与请求
server
匹配的块,则nginx 使用默认块。server_name
server
默认
server
块可以是listen
指令具有default_server
修饰符的块。如果不存在这样的块,则第一个
server
块是默认值。在您的情况下,我认为您需要像这样设置默认服务器块: