0

我在 NGINX 后面的机器上运行了多个服务,

使用为少数应用程序端点配置的 server_name

server {
    server_name my_app_1;
    listen *:443;
    ....
}
server {
    server_name my_app_2;
    listen *:443;
    ....
}

由于我希望一项服务成为我机器的默认应用程序,因此我将其公开为默认服务器

#mydomain.com
   server {
        listen *:443 default_server;
        location / {
           ...
        }
    }

问题是,当 NGINX 收到对 https://mydomain.com 的请求且 HOST 标头设置为“another.app.com”时,default_server 开始提供服务。它返回 404,

但我想限制默认服务器或其他服务器仅在 HOST 标头和请求域相同时服务。

就像是,

server {
    server_name $request_domain;
    listen *:443;
}

请帮助我。

注意:我们可以为 server_name 给出所有域名的可能组合。在我的情况下,IP 不是静态/动态的

4

1 回答 1

2

您可以在虚拟主机中使用以下重定向规则。

server_name test1.com;
set $domain_name test1.com;
if ($http_host != $domain_name) {
return 403;
}

当 http_host 和域名匹配时,上述规则将允许。否则会报403错误。

于 2020-05-22T13:25:03.343 回答