我正在尝试使用多层的 Nginx 设置基本的 HTTP 身份验证。除了某个子目录(URL)之外,我想为整个站点设置一个用户名和密码,并为该子目录设置一个单独的用户名和密码。如果有人导航到该子目录,我希望仅提示他们输入特定于子目录的凭据,而不是站点根目录的凭据。
我该如何设置?
参考: http: //nginx.org/en/docs/http/ngx_http_auth_basic_module.html
假设子目录 url 是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
第 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;
}
}