将位置指令应用于 NGINX 上的子域和子子域

将位置指令应用于 NGINX 上的子域和子子域

我正在尝试在 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 指令将其拉入每个服务器。

相关内容