サイト全体で基本認証を有効にし、サブページで無効にしますか?


26

私は比較的単純な構成を持っています:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        proxy_pass http://appserver-1;
        proxy_redirect              off;
        proxy_set_header            Host $host;
        proxy_set_header            X-Real-IP $remote_addr;
        proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;

    }

    location /api/ {
        auth_basic          off;
    }
}

目標は、/api/サブツリーを除くWebサイト全体で基本認証を使用することです。基本認証に関しては機能しますが、他のディレクティブも同様proxy_passに有効ではありません/api/

すべてをコピー&ペーストせずに他のディレクティブを保持しながら、基本認証を無効にすることは可能ですか?

回答:


26

2つのファイルはどうですか?

includes / proxy.confは次のようになります。

proxy_pass http://appserver-1;
proxy_redirect              off;
proxy_set_header            Host $host;
proxy_set_header            X-Real-IP $remote_addr;
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

そして現在の設定ファイル:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;
        include includes/proxy.conf;
    }

    location /api/ {
        auth_basic          off;
        include includes/proxy.conf;
    }
}

9

構成ファイル

Nginx 1.4.4 offでは、auth_basic設定に引用符が必要です。

location / {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/passwd;
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/tmp/app.sock;
}

location /api {
    auth_basic "off";
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/tmp/app.sock;
}

htpasswd / passwdファイルの作成

インストールapache2-utils、非常に迅速にhtpasswdファイルを作成する素敵なヘルパーアプリがあります。http://httpd.apache.org/docs/2.2/programs/htpasswd.html

htpasswd -c -m <filename> <username>

これにより、特定の場所が除外され、サイトの残りの部分のパスワードの入力が求められます。ただし、401エラーページの代わりに[キャンセル]をクリックすると、要求した実際のページが表示されますが、静的ファイルはありません。
aexl 16

4

以下の設定は、共有フォルダの認証なしでディスクからフォルダを共有するために私のために機能し、サイトの残りの部分は認証が必要です

server {
        listen       80;
        server_name  localhost;
        root C:\\Users\\Work\\XYZ\\;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        auth_basic "Administrator Login";
        auth_basic_user_file C:\\Users\\Work\\.htpasswd;

        location /share {
            auth_basic "off";
            allow all; # Allow all to see content 
            alias C:\\Users\\sg32884\\Work\\share\\;
        }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.