我允许我的 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
你可以:
将您想要允许的每个单独的名称放入适当的服务器配置中的 server_name 中,并创建一个单独的服务器作为 default_server,拒绝访问任何内容。
使用 nginx 的 map 模块,如果您的名字不在列表中,则返回错误代码。map 模块还支持通配符。