Nginx反向代理非侦听域全部捕获
使用nginx作为反向代理,我注意到,如果一个站点指向服务器,但实际上并不存在,那么服务器上的现有站点将为您提供服务,而不是“找不到域”消息或类似消息 ie假设您的配置块正在监听portal.test.org用户将那里的cname指向nginx系统,但域标题为smartportal.test.org 或者说他们指向一个网站,如portal.test2.org 有人能告诉我以下几点吗 a。nginx如何决定在不作为虚拟主机存在时返回哪个站点 B如何捕获任何未指定的域,并返回默认页面,告知用户此主机上不存在此域 希望有人能帮助我,我试过谷歌搜索,但我想有时候它知道正确的术语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如何捕获任何未指定的域,并返回默认页面,告知用户此主机
非常感谢您应该使用指令和指令的
默认\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 ...
}
}