使用nginx作为反向代理,我注意到,如果一个网站指向服务器,但实际上并不存在,你会得到服务器上现有网站的服务,而不是一个域名无法找到消息或类似的
ie说你的配置块正在监听portal.test.org,用户指向那里cname到nginx系统,但域标头为smartportal.test.org
或者他们指向一个网站,比如portal.test2.org
谁能告诉我下面的内容
。当nginx不作为虚拟主机存在时,它如何决定返回哪个站点b.如何捕获任何未指定的域,并返回一个默认页面,告诉用户此域在此主机上不存在
希望有人能帮助我,我试过谷歌,但我认为有时它知道正确的术语。
多谢
应该使用listen指令和server_name指令的default_server
参数
你的问题
-
nginx如何决定当它不作为虚拟主机存在时返回哪个站点
听(default_server)
如果指令有default_server形参,则封闭的服务器{…}块将是地址:port的默认服务器对。这对于基于名称的虚拟主机非常有用指定不匹配的主机名的默认服务器块server_name指令。如果没有指令与参数Default_server,则默认服务器将是第一个出现地址:端口对的服务器块。
server_name>
个指令执行两个操作:比较传入HTTP请求的Host头与服务器{…}块,并选择第一个匹配的。这就是虚拟服务器的定义方式。服务器名按以下顺序处理:
1。-完整的静态名称
2。-名称开头带有通配符的名称- *.example.com
3。-以通配符结尾的名称- www.example.*
4。-使用正则表达式
命名如果没有匹配,服务器{…}插入配置文件将按照以下顺序使用:
1。- - -带有匹配的监听指令的服务器块,标记为(默认| 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 ... } }