【问题标题】:nginx and auth_basicnginx 和 auth_basic
【发布时间】:2011-01-01 21:54:21
【问题描述】:

我正在尝试在 Ubuntu Jaunty 中使用 nginx 进行基本身份验证。在 nginx.conf 中,我在服务器上下文下添加了这两行:

server {
   ...
   auth_basic "Restricted Access";
   auth_basic_user_file /etc/nginx/.htpasswd;
   ...
}

然后我 apt-get'ed apache2-utils 来获取我用来创建 htpasswd 文件的 htpasswd:

htpasswd -d -c /etc/nginx/.htpasswd joe

当我尝试访问该站点时,身份验证对话框按预期出现,但是当我输入用户名和密码时,它只是刷新了对话框。它似乎不喜欢我提供的密码。我尝试使用和不使用 -d 选项运行 htpasswd,但仍然没有运气。它拒绝进行身份验证。任何想法我做错了什么?

任何帮助将不胜感激。

【问题讨论】:

  • 您尝试过“auth_basic_user_file”的相对路径吗?
  • @KP 你能分享为你解决这个问题的原因吗?

标签: nginx basic-authentication .htpasswd


【解决方案1】:

nginx 将 401 响应识别为注销,确保您的站点没有返回 401 并再次重定向,它将陷入无限登录循环,登录 -> 401 -> 注销 -> 重定向到同一页面 -> 重复

【讨论】:

    【解决方案2】:

    我在 bash 中遇到的另一个问题。我没有通过提示输入密码,而是使用htpasswd-b 选项在线输入密码。

    $ htpasswd -nb admin test123$secure
    

    我不明白为什么我不断遇到密码不匹配错误,尝试不同的加密算法。我用 curl 验证了它的工作原理:

    $ curl -u admin:test123$secure https://example.com
    

    最后,问题通过echo暴露出来

    $ echo test123$secure
    test123
    

    我犯了一个错误,在 bash 中使用了 美元符号 ($),它被解释为一个空变量,因此省略了其他所有内容。这可以通过删除-b 选项并仅使用提示输入密码来避免。

    【讨论】:

      【解决方案3】:

      旧线程,但没有答案,在 Google 上有很好的参考。

      如果您收到此错误并尝试了其他建议,请检查 .htpasswd 文件的 父文件夹 的权限:nginx 用户(默认为 www-data)应该已阅读 并执行权限(这为我修复了它)。

      【讨论】:

        【解决方案4】:

        我会检查的事情:

        • `/etc/nginx/.htpasswd` 的权限 - 运行 nginx 的帐户可以读取文件吗?您可以暂时尝试使用 `chmod 644` 来确保每个人都可以阅读它。如果可行,那么您可以整理出 `chown` 和 `chmod` 设置的适当组合,以便 nginx 和您/root 可以读取它,但其他用户不能(出于安全考虑)。
        • 确保 `htpasswd` 以正确的形式生成哈希;它通常是大约 13 个字母数字字符(例如 `username:wu.miGq/e3nro`)。该命令也可以生成 MD5 哈希,看起来更像是 `username:$apr1$hzB2K...$b87zlCYMKufOxn9ol5QV4/` 这些不适用于 nginx。
        • 考虑增加 nginx 的调试输出并检查错误日志以获取线索。

        【讨论】:

        • 根据nginx.org/en/docs/http/ngx_http_auth_basic_module.html 的文档,现在支持“基于 MD5 的密码算法 (apr1) 的 Apache 变体”
        • 甚至文档都指出“现在支持 Apache 变体”,我只使用 PLAIN 算法解决了这个问题。不幸的是,在nginx中调试日志,消息仍然是“open()”.htpasswd“失败(13:权限被拒绝)”,这可能是问题的内部根源(从nginx的开发者角度来看),但没有用当您尝试进行故障排除时。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 2011-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多