我正在尝试在Ubuntu Jaunty中使用nginx进行基本身份validation。 在nginx.conf中,我在服务器上下文中添加了这两行:
server { ... auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; ... }
然后我apt-get'ed apache2-utils得到htpasswd,我用它来创buildhtpasswd文件:
htpasswd -d -c /etc/nginx/.htpasswd joe
当我尝试访问该站点时,authentication对话框按预期发生,但是当我input用户名和密码时,它只刷新了对话框。 它似乎不喜欢我提供的密码。 我尝试运行htpasswd和无-d选项,但仍然没有运气。 它拒绝authentication。 任何想法我做错了什么?
任何帮助,将不胜感激。
我会检查的事情:
旧的线程,但没有答案,并很好地引用了谷歌。
如果出现这个错误,并尝试了其他建议,请检查.htpasswd文件的父文件夹的权限:nginx用户(默认情况下是www-data)应具有读取和执行权限(这为我解决了这个问题)。
我在bash上遇到的另一个问题。 而不是通过提示输入我的密码,我用htpasswd
的-b
选项输入密码。
$ htpasswd -nb admin test123$secure
我不明白为什么我一直在运行密码不匹配错误,尝试不同的加密算法。 我用curl验证了它的工作原理:
$ curl -u admin:test123$secure https://example.com
最后,这个问题通过echo
证实
$ echo test123$secure test123
我犯了在bash中使用dolar标志($)的错误,它被解释为一个空变量,从而省略了其他所有的东西。 这可以通过删除-b
选项并仅使用提示输入密码来避免。