首页 > 解决方案 > 剂量 nginx server_name 如何工作

问题描述

我有两个网站一个是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;
        }
    }

它运作良好

服务器1 服务器2

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

    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我想我会得到404500http 代码。但我得到了回应server1

服务器2

为什么?

标签: nginxnginx-config

解决方案


使用不同的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


推荐阅读