Nginx 身份验证仅适用于给定位置

Nginx 身份验证仅适用于给定位置

我正在使用 Nginx 作为 python WSGI web 应用程序的反向代理。

它看起来像这样:

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。

答案1

您只需添加另一个位置块您当前拥有的那个,以匹配您想要保护的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;
}

因为它在/1 之前,所以将优先用于路径 /managers 。

相关内容