web-dev-qa-db-ja.com

HTTP .htpasswdは、Nginxのサブドメインを再帰的に保護します

開発者サブドメイン(dev.example.com)をパスワードで保護し、メインドメインを公開したままにします。

これを再帰的に実行して、サブドメイン上のすべてのファイルまたはフォルダーが常にログインを要求するようにします。

Nginx構成ファイルで、dev.example.comサーバーブロックに以下を追加しました(メインドメインとサブドメインに別々のサーバーブロックがあることに注意してください)。

location ^~ / {
    auth_basic "Administrator Login";
    auth_basic_user_file /home/path/to/.htpasswd;
}

SFを探し回ったところ、^~識別子はパスワード保護を再帰的にしますが、そうではありません。

Dev.example.comは特にログインを要求しますが、dev.example.com/folder /はそうではありません。

私は何が間違っているのですか?

2
Trace DeCoy

サブドメイン全体を保護するには、ステートメントをexistingserverブロックに表示する必要があります。

server {
    server_name dev.example.com;
    auth_basic "Administrator Login";
    auth_basic_user_file /home/path/to/.htpasswd;
    ...
}
2
Richard Smith

これはうまくいくはずです。また、編集が完了したら、必ずnginxを再起動してください。

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html/subdomain;
    index index.php index.html index.html
    server_name dev.example.com;;

    location ^~ / {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

}
0
Don Dilanga