web-dev-qa-db-ja.com

指定された場所に対してのみNginx認証

python WSGIweb-appのリバースプロキシとしてNginxを使用しています。

次のようになります。

location / {
    #auth_basic     "Administrator Login";
    #auth_basic_user_file  /var/www/static/.htpasswd;
    proxy_pass          http://mywebapp_gunicorn;
    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;
}

Webアプリケーション内には、非常に保護したい管理者ページがいくつかあるので、Webアプリケーション内でいくつかの認証を使用してそれらを保護しています。また、Nginx認証も追加したいと思います。

アクティベートする方法:

    auth_basic      "Administrator Login";
    auth_basic_user_file  /var/www/static/.htpasswd;

パスの場合:/managersですが、他のすべてのURLではありません。

2
YardenST

保護したいURLに一致させるために、別のロケーションブロックを追加する必要があります現在持っているもの。

location /managers {
    auth_basic      "Administrator Login";
    auth_basic_user_file  /var/www/static/.htpasswd;
    proxy_pass          http://mywebapp_gunicorn;
    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;
}

location / {
    proxy_pass          http://mywebapp_gunicorn;
    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;
}

/の前にあるため、パス/ managersに優先的に使用されます。

7
Danack