我需要从一个 IP 为 2 个服务器提供服务,这些服务器具有 2 个不同的服务器名称但相同的端口。
name.one.com:443 --> 192.168.10.1:80
名称.two.com:443 --> 192.168.10.2:80
问题
如何设置不同的默认服务器为name.one.com
且name.two.com
在Nginx
?
我的研究
这文档说:
请注意,默认服务器是监听端口的属性,而不是服务器名称的属性。
我的理解是“您只能为不同的端口设置不同的默认服务器,而不管服务器名称是什么”。
因此我认为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 也是如此。