Nginx反向代理非侦听域全部捕获

Nginx反向代理非侦听域全部捕获,nginx,reverse-proxy,catch-all,Nginx,Reverse Proxy,Catch All,使用nginx作为反向代理,我注意到,如果一个站点指向服务器,但实际上并不存在,那么服务器上的现有站点将为您提供服务,而不是“找不到域”消息或类似消息 ie假设您的配置块正在监听portal.test.org用户将那里的cname指向nginx系统,但域标题为smartportal.test.org 或者说他们指向一个网站,如portal.test2.org 有人能告诉我以下几点吗 a。nginx如何决定在不作为虚拟主机存在时返回哪个站点 B如何捕获任何未指定的域,并返回默认页面,告知用户此主机

使用nginx作为反向代理,我注意到,如果一个站点指向服务器,但实际上并不存在,那么服务器上的现有站点将为您提供服务,而不是“找不到域”消息或类似消息

ie假设您的配置块正在监听portal.test.org用户将那里的cname指向nginx系统,但域标题为smartportal.test.org

或者说他们指向一个网站,如portal.test2.org

有人能告诉我以下几点吗

a。nginx如何决定在不作为虚拟主机存在时返回哪个站点 B如何捕获任何未指定的域,并返回默认页面,告知用户此主机上不存在此域

希望有人能帮助我,我试过谷歌搜索,但我想有时候它知道正确的术语


非常感谢

您应该使用指令和指令的
默认\u服务器
参数

你的问题

  • nginx如何决定在不作为虚拟主机存在时返回哪个站点

    侦听[默认\u服务器]

    如果指令具有默认的_server参数,则 服务器{…}块将是地址端口的默认服务器 一对这对于您希望访问的基于名称的虚拟主机非常有用 为不匹配任何主机名的主机名指定默认服务器块 服务器名称指令。如果没有与 默认服务器参数,则默认服务器将是第一个 出现地址:端口对的服务器块


    服务器名称

    本指令执行两个操作:

    将传入HTTP请求的主机标头与 服务器{…}阻塞Nginx配置文件并选择 第一个匹配的。这就是虚拟服务器的定义方式。 服务器名称按以下顺序处理:

    1.-完整的静态名称

    2.-名称开头带有通配符的名称-*.example.com

    3.-名称末尾带有通配符的名称-www.example.*

    4.-带正则表达式的名称

    如果没有匹配项,则在 将根据以下顺序使用配置文件:

    1.-第 具有标记为的匹配侦听指令的服务器块 [默认|默认_服务器]

    2.-具有匹配侦听的第一个服务器块 指令(或隐式侦听80;)

  • 如何捕获任何未指定的域,并返回默认页面,告知用户此主机上不存在此域

server {
  listen 1.2.3.4:80 default_server;
  server_name _ "";
  location / {
    alias /var/www/html/domain-does-not-exists.html; 
   }
}

server {
  listen 1.2.3.4:80 ;
  server_name portal.test.org;
  location / {
      ... your site ...
   }
}