我正在尝试使用Nginx设置基本的HTTP身份验证,这是多层次的。我想要一个用户名&除了某个子目录(URL)以外的整个站点的密码,以及单独的用户名&该子目录的密码。如果某人导航到该子目录,我希望系统仅提示他们输入特定于子目录的凭据,而不是网站根目录的提示。
如何设置?
答案 0 :(得分:8)
参考:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
假设子目录网址为http://www.example.com/admin/。
步骤1:使用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;
}
}