Nginx密码保护root,子目录单独密码

标签 nginx .htpasswd

我正在尝试使用多层的 Nginx 设置基本的 HTTP 身份验证。除了某个子目录 (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;
    }
}

关于Nginx密码保护root,子目录单独密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838379/

相关文章:

security - 使用类似密码的单个 htpasswd 保护开发 Grails 应用程序

php - .htaccess 受密码保护的文件夹转到 404 页面

nginx - 如何在 CoreOS 中负载均衡服务?

mysql - Nginx Php5-fpm 配置在 Maverisks 上不起作用

java - 如何使用java生成像apache的htpasswd这样的哈希

php - 如何将 HTTP 身份验证添加到基于 PHP 的 Heroku 应用程序?

node.js - 如果我在 Docker 容器中运行 Node.js,是否需要反向代理?

nginx - 基于 TCP 负载的动态服务器集的一致性哈希

docker - ipv4 https 请求未转发到 docker 容器

apache - 正确使用.htpasswd