默认情况下,Nginx 允许直接以 IP 的方式就能直接访问到网站,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的服务器 IP)。这样容易暴露一些服务器上的网站,那么我们怎么设置 Nginx 禁止这些行为呢?

server {
    listen 80 default_server;
    server_name _;
    return 404;
}

对于未绑定的域名指向你的服务器时,匹配不到你配置的虚拟主机域名后,会默认使用这个虚拟主机,然后直接返回 404。

listen 80 default_server: 指定该 server 配置段为 80 端口的默认主机,即对于未绑定的域名指向你的服务器时,匹配不到你配置的虚拟主机域名后,会默认使用这个虚拟主机。

server_name _: 此处的_可以换成任意其他无效字符或无效的域名,表示该 server 配置不会被正常访问到。

return 404: 表示直接返回 404 错误。