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

我试图用多层的Nginx设置基本的HTTPauthentication。 我想有一个整个网站的用户名和密码,除了一个特定的子目录(URL)和一个单独的用户名和密码的子目录。 如果有人导航到该子目录,我希望它们仅提示子目录特定的凭据,而不是为站点根。

我如何设置?

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

假设子目录url是http://www.example.com/admin/

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

 # 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; } }