Nginx は 1 つのドメインをパスワードで保護し、設定の重複を回避します。

Nginx は 1 つのドメインをパスワードで保護し、設定の重複を回避します。

dev.domain.com と beta.domain.com という 2 つのドメインがあります。現時点では、特定の場所とルールが多数含まれたサーバー セクション (デフォルト) が 1 つあります。次に、beta.domain.com をパスワードで保護する必要があります。追加のサーバー セクションを作成せずに、場所とその他のルールをすべて複製せずに、これを実行する方法はありますか?

一般的に、他の人が複雑な nginx 構成をどのように管理しているかを知りたいです。セクションをコピー (複製) するだけですか、それとも何らかの方法で共通のルールを含めますか?

答え1

複数のサーバー ブロック間で設定を共有する最も簡単な方法は、include ディレクティブを使用することです。たとえば、次のようになります。

/etc/nginx/conf.d/mysite.inc:

#...locations and rules...

/etc/nginx/sites-available/dev.domain.com:

server {
    server_name dev.domain.com;
    root /path/to/root;
    include /etc/nginx/conf.d/mysite.inc;
}

/etc/nginx/sites-available/beta.domain.com:

server {
    server_name beta.domain.com;
    root /path/to/root;
    include /etc/nginx/conf.d/mysite.inc;
    location / {
        auth_basic "Authentication Required";
        auth_basic_user_file  /path/to/authfile;
    }
}

関連情報