Nginx server_name的工作方式

时间:2019-06-17 06:19:50

标签: nginx nginx-config

我有两个网站,一个是server1.example.com,另一个是server2.example.com。所以我在nginx_config

中添加了两个服务器
server{
        listen  80;
        server_name server1.example.com;
        location / {
            proxy_pass http://127.0.0.1:9090;
        }
    }

    server{
        listen  80;
        server_name server2.example.com;
        location / {
            proxy_pass http://127.0.0.1:9091;
        }
    }

效果很好

server1 server2

如果我删除其中之一,则结果不符合我的期望。 当我删除server2.example.com

的conf时
    server{
        listen  80;
        server_name server1.example.com;
        location / {
            proxy_pass http://127.0.0.1:9090;
        }
    }

    # server{
    #     listen  80;
    #     server_name server2.example.com;
    #     location / {
    #         proxy_pass http://127.0.0.1:9091;
    #     }
    # }

当我访问server2时,我会得到404500 http代码。但是我得到了server1

的回复

server2

为什么?

1 个答案:

答案 0 :(得分:0)

server_name可以使用不同的虚拟名称,而对于nginx,则是查看服务器的哪个部分。

如果没有与之匹配的部分,则nginx将使用第一个声明的服务器。在这种情况下,您是哪个server1.example.com。或者,您可以使用default_server关键字来覆盖它。

server{
   listen  80 default_server;
   server_name server1.example.com;
   location / {
       proxy_pass http://127.0.0.1:9090;
   }
}

您应该在下面的网址中查看更多详细信息

http://nginx.org/en/docs/http/request_processing.html