【问题标题】:NGINX - How to check whether the requested domain and server_name (HOST header value) are sameNGINX - 如何检查请求的域和 server_name(HOST 标头值)是否相同
【发布时间】:2020-09-09 06:17:21
【问题描述】:

我有多个服务在 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 不是静态/动态的

【问题讨论】:

    标签: nginx server-name hostheaders


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-18
      • 2021-04-10
      • 2011-07-03
      • 2022-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      相关资源
      最近更新 更多