使用nginx作为反向代理我已经注意到,如果某个站点指向服务器但实际上并不存在,那么您将获得服务器上的现有站点,而不是找不到域或类似的域。
即说您的配置块正在侦听portal.test.org,用户将 cname 指向nginx系统,但域名为 smartportal。 test.org
或者说他们指向像 portal.test2.org
这样的网站有人可以指导我以下
一个。 nginx如何确定当它不作为虚拟主机存在时返回哪个站点 湾如何捕获未指定的任何域并返回一个默认页面,告知用户此主机上不存在此域
希望有人可以帮助我尝试谷歌搜索,但我认为有时它知道正确的条款。
非常感谢
答案 0 :(得分:1)
您应该使用listen指令和server_name指令的default_server
参数。
你的问题
nginx如何确定哪个站点不作为虚拟主机存在时返回
听[default_server]
如果指令有default_server参数,那么封闭 server {...}块将是address:port的默认服务器 对。这对于您希望的基于名称的虚拟主机非常有用 为任何不匹配的主机名指定默认服务器块 server_name指令。如果没有指令 default_server参数,那么默认服务器将是第一个 服务器块,其中显示地址:端口对。
服务器名称
该指令执行两个操作:
比较传入HTTP请求的Host头与 Nginx配置文件中的服务器{...}块并选择 第一个匹配。这就是定义虚拟服务器的方式。 服务器名称按以下顺序处理:
1.-完整的静态名称
2.-名称开头带有通配符的名称 - * .example.com
3.-名称末尾带有通配符的名称 - www.example。*
4.-带有正则表达式的名字
如果没有匹配,则服务器{...}阻止 将根据以下顺序使用配置文件:
1.- 具有匹配的listen指令的服务器块,标记为 [default | default_server]
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 ... } }