Nginx:如何为相同端口但不同的服务器名称设置默认服务器

Nginx:如何为相同端口但不同的服务器名称设置默认服务器

我需要从一个 IP 为 2 个服务器提供服务,这些服务器具有 2 个不同的服务器名称但相同的端口。

name.one.com:443 --> 192.168.10.1:80

名称.two.com:443 --> 192.168.10.2:80

问题

如何设置不同的默认服务器name.one.comname.two.comNginx

我的研究

文档说:

请注意,默认服务器是监听端口的属性,而不是服务器名称的属性。

我的理解是“您只能为不同的端口设置不同的默认服务器,而不管服务器名称是什么”。

因此我认为default_server该指令不起作用。

我正在考虑default_server根本不使用指令,并尝试使用适当的正则表达式设置服务器名称,以便对于每个没有匹配的服务器名称,它们将被路由到伪默认值服务器。

答案1

您需要了解“监听端口”可以包括IP地址部分。

因此这应该对你有用:

server {
    listen 192.168.10.1:80 default_server;
    server_name name.one.com;
    # here the rest of your server config
}

server {
    listen 192.168.10.2:80 default_server;
    server_name name.two.com;
    # here the rest of your server config
}

请求的处理方式是尝试将Host:标头与节server_name中的配置项进行匹配server。只有未找到匹配项时,才会default_server使用服务器节。

default_server因此,如果没有与任何其他节匹配,进入 192.168.10.1:80 的请求将由该节处理server_name,192.168.10.2:80 也是如此。

相关内容