【发布时间】:2019-06-11 17:13:17
【问题描述】:
我使用 Nginx 作为反向代理。它在 Swarm 集群中作为容器化服务运行。
不久前,我发现了这种奇怪的行为,我正在努力解决它。
在我的主机上,我设置了三个子域:
one.domain.com
two.domain.com
three.domain.com
在我的 Nginx 服务器配置中,我指定我要定位的 server_name 是 three.domain.com,所以我希望 Nginx 只响应针对该子域的请求。
events { worker_connections 1024; }
http {
upstream service {
server node:3000;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name three.domain.com;
[...... ssl settings here.......]
location / {
proxy_pass http://service;
proxy_set_header Host $host;
}
}
}
会发生什么,而不是只响应发送到 three.domain.com 的请求,它还响应 one.domain.com 和 two.domain.com。 (它将它们路由到three.domain.com)
如果我添加多个专门针对子域 1 和 2 的服务器块,它会按预期工作,它将请求路由到它们所属的位置。
话虽如此,理想的行为是只响应服务器块的 server_name 部分中列出的子域。
【问题讨论】: