如何通过 widecard nginx 服务器验证子域名

如何通过 widecard nginx 服务器验证子域名

我允许我的 DNS 提供商放置任何子域名,并将我的 nginx default.conf 附加在下面。我想在运行时允许一些列出的子域名。

  • 案例 1:test.example.com 和 best.example.com 均从 DNS 允许,但我只想允许 test.example.com,那么如何从有效子域列表中匹配子域名。
  • 情况2:这些有效的子域名将维护在某些外部http api上。
  • 案例 3:Mai i 执行一些外部 python 或 c 代码来验证这一点。
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    if($1 != 'test') {
           rewrite ^(.*) https://$host$1 redirect;
    }
    if ($http_x_forwarded_proto != 'https') {
          #rewrite ^(.*) https://$host$1 redirect;
    }
    root /var/www/html;
    location / {
    }
}

答案1

你可以:

  1. 将您想要允许的每个单独的名称放入适当的服务器配置中的 server_name 中,并创建一个单独的服务器作为 default_server,拒绝访问任何内容。

  2. 使用 nginx 的 map 模块,如果您的名字不在列表中,则返回错误代码。map 模块还支持通配符。

相关内容