我允许我的 dns 提供商将任何子域和我的 nginx default.conf 附加在下面。我想在运行时允许一些列出的子域。
- Case1:DNS 允许 test.example.com 和 best.example.com,但我只想允许 test.example.com,因此如何从有效子域列表中匹配子域名。
- 案例 2:这些有效的子域将在一些外部 http api 上维护。
- 案例 3:我执行了一些外部 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 / {
}
}
你可以:
将您希望允许的每个单独的名称放在适当的服务器配置中的 server_name 中,并创建一个单独的服务器作为 default_server 拒绝访问任何内容。
使用 nginx 的 map 模块,如果你的名字不在列表中,则返回错误代码。map 模块还支持通配符。