我正在尝试在 NGINX 上设置一个站点,以便二级域名公开可见,但对子域名的访问受到限制。基本上应该dev.domain.com
限制在我的 IP 上,并且staging.domain.com
仅限于 http 身份验证。我还希望将这些子域名的所有子子域名应用相同的限制。
每个子域名的 server_name 都设置为特殊通配符,我认为这会影响所有域名(见下文)。因此我在服务器块中为每个子域设置了位置指令;为 允许/拒绝server_name .dev.domain.com
和 auth_basic server_name .staging.domain.com
。
它对子域名来说效果很好,但我希望这些指令也适用于所有子子域名(即site1.dev.domain.com
)。现在我必须分别将指令添加到每个子子域名。
如何将这些指令应用到所有子域?
这是 staging.domain.com 的服务器块设置
server {
listen 80;
listen [::]:80;
server_name .staging.domain.com;
root /home/forge/staging.domain.com/public;
答案1
您在 http 块中输入的任何内容都将被所有服务器块继承。然后,您可以根据需要在服务器块上覆盖这些设置。
或者,您可以将通用设置放在另一个文件中(例如 auth.conf),并使用 include 指令将其拉入每个服务器。