Nginx密码保护root,并为子目录分隔密码

Chr*_*aan 4 nginx .htpasswd

我正在尝试使用Nginx设置基本的HTTP身份验证,这是多层次的.我想为整个网站提供一个用户名和密码,除了某个子目录(URL),以及该子目录的单独用户名和密码.如果有人导航到该子目录,我希望它们仅被提示输入特定于子目录的凭据,而不是网站根目录的凭据.

我该如何设置?

Chu*_* Ma 8

参考:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

假设子目录网址为http://www.example.com/admin/.

步骤1:使用创建2个存储用户名/密码(加密)对的文件 htpasswd

# to secure the admin site
htpasswd -bc /tmp/admin_passwd.txt admin adminpassword
# to secure the main site
htpasswd -bc /tmp/site_passwd.txt user userpassword
Run Code Online (Sandbox Code Playgroud)

第2步:设置你的nginx配置:

server {
    listen                      80;
    server_name                 www.example.com;
    root        /tmp/www;

    location ^~ /admin/ {
        auth_basic           "secured site admin";
        auth_basic_user_file /tmp/admin_passwd.txt;
    }

    location / {
        auth_basic           "secured site";
        auth_basic_user_file /tmp/site_passwd.txt;
    }
}
Run Code Online (Sandbox Code Playgroud)