考虑在同一台服务器上托管的两个网站:domain.com
和foo.domain.com
。我想在端口5555上为每个站点启动监视面板。每个站点都有一个单独的监视面板,因此我需要使用nginx将domain.com:5555
和foo.domain.com:5555
路由到两个不同的位置。
以下是foo.domain.com
的配置:
server {
listen 5555;
server_name foo.domain.com;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://localhost:5678;
}
}
虽然这适用于foo.domain.com:5555
,但它也会将domain.com:5555
路由到监控面板。这就像我定义server_name domain.com foo.domain.com
一样,但显然我只为foo.domain.com
定义了它。
服务器上唯一的其他nginx配置是针对端口80和443.这些配置都不使用任何通配符并明确使用全名。
答案 0 :(得分:1)
nginx
始终有一个默认服务器 - 如果您没有定义默认服务器,它将使用第一个具有匹配listen
指令的服务器块。
如果您想阻止此行为,则需要为端口5555定义一个包罗万象的服务器。
例如:
server {
listen 5555 default_server;
return 444;
}
有关详情,请参阅this document。