nginx正在为请求裸IP地址(与服务器名称不匹配)的页面提供服务

nginx正在为请求裸IP地址(与服务器名称不匹配)的页面提供服务,nginx,nginx-config,Nginx,Nginx Config,我有一个nginx配置,有两个虚拟主机,没有默认站点 server { listen 123.45.67.89:80; server_name site_a.example.com site_a1.example.com; root /srv/site_a_checkout/html/site_a; access_log /var/log/site_a/nginx.access.log; error_log /var/log/site_a/nginx.error.log;

我有一个nginx配置,有两个虚拟主机,没有默认站点

server {
  listen 123.45.67.89:80;
  server_name site_a.example.com site_a1.example.com;

  root /srv/site_a_checkout/html/site_a;
  access_log /var/log/site_a/nginx.access.log;
  error_log /var/log/site_a/nginx.error.log;

  index index.html index.htm index.nginx-debian.html;

  location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
  }
}
每个虚拟主机配置都有一个带有两个服务器的
服务器名称

第二个服务器名
site\u a1.example.com
的存在是因为有多个服务器,有时开发人员需要知道他们正在查看哪个服务器

如果
http://site_a.example.com
http://site_a1.example1.com
http://site_b.example.com
http://site_b1.example1.com
已请求

问题是如果
http://123.45.67.89
请求,则为
站点提供服务

没有
/etc/nginx/sites\u enabled/default
,只有site\u a和site\u b的虚拟主机

为什么站点作为
http://123.45.67.89

如何使对IP地址的请求失败



我也试过了,但这些都不起作用

这些解决方案都不起作用,因为它们隐式侦听0.0.0:80,而虚拟主机侦听123.45.67.89:80

对于虚拟主机侦听的任何特定IP地址,都需要存在默认服务器

这项工作:

server {
  server_name _;
  listen 123.45.67.89:80 default_server deferred;
  return 444;
}
如果我加上:

  listen 123.45.67.89:443 default_server deferred;

它会终止HTTPS连接(在可以读取SNI之前),并断开该IP地址上的所有SSL虚拟主机。这是另一天的问题

我在启用的站点中找到并安装了一个默认的-444,但nginx仍然使用裸IP地址为站点提供服务。我还尝试使用IP地址作为服务器名称进行设置,但这也不起作用。