2013-05-21 30 views
-1

使用nginx作为反向代理我已经注意到,如果一个站点指向服务器但实际上并不存在,那么服务器上的现有站点就会获得服务,而不是域找到消息或类似内容。Nginx反向代理非侦听域捕获所有

说你的配置块被监听portal.test.org用户点有CNAME到nginx的系统,但随着smartportal.test.org

或者说域头他们指出像网站portal.test2.org

有人能告诉我在下面

一个。 b。如何在nginx不存在虚拟主机时决定返回哪个站点 b。如何捕捉任何未指定的域,并返回一个默认页面,告诉用户此域名不存在此主机上

希望有人可以帮助我尝试了谷歌搜索,但我认为有时它知道正确的条款。

非常感谢

回答

1

你应该使用listen指令和server_name指令default_server参数。

您的问题

  • nginx怎么确定返回的站点时,它不会作为一个虚拟主机存在

    听[default_server]

    如果该指令有default_server参数,那么封闭的 服务器{...}块将作为地址:端口 对的默认服务器。这对于基于名称的虚拟主机非常有用,您希望 指定主机名的默认服务器块,该主机名与任何 server_name指令都不匹配。如果没有使用 default_server参数的指令,则默认服务器将成为地址:端口对出现的第一个 服务器块。


    服务器名

    这个指令执行两个动作:

    比较该 服务器传入HTTP请求的主机头{...}块Nginx的配置文件,并且选择 第一个匹配的。这就是虚拟服务器的定义。在名称的开始

    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 ... 
        } 
    } 
    
上不存在默认页