如何阻止 Nginx 中未定义的 server_name?

如何阻止 Nginx 中未定义的 server_name?

我有两个server {}包含我需要使用的域名的块。

但是我发现了一个问题.....如果我配置指向我的服务器的另一个域的 DNS,nginx 会正确响应!为什么?

Nginx 应该响应 http 错误!但它返回了具有相同 IP 地址的网站,为什么?我没有该域名的服务器名称!

谢谢你!

答案1

它之所以会响应,是因为您没有配置单独的“默认”虚拟主机。始终会配置默认或后备虚拟主机,这样 nginx 就知道在收到您发送的请求类型时该做什么。

nginx 文档很好地描述了如何执行服务器名称到虚拟主机的匹配,但简而言之,我建议像这样配置新的虚拟主机:

server {
  listen 80 default_server;
  root /usr/share/empty;
}

/usr/share/empty(如果尚不存在则可能需要创建)

这将向任何使用无法识别的虚拟主机名访问您的服务器的人提供一个空目录。如果您愿意,您可以使用各种错误页面等来获得更精美的内容。

相关内容