永远403禁止使用Nginx .htpasswd

时间:2016-09-05 19:11:32

标签: nginx

通过查看this这样的教程,设置.htpasswd身份验证似乎相对容易。

这是我的HTTPS块,这就是我访问我网站的方式:

 server {
      listen 443;
      server_name potato;
      root /var/www/html;
      ssl on; 
      ssl_certificate      /srv/ssl/cert.pem;
      ssl_certificate_key  /srv/ssl/key.pem;  

      location / {
        auth_basic "Restricted Content";
        auth_basic_user_file /usr/local/nginx/.htpasswd;
      }

  } 

我从here收集了以下代码段以创建.htpasswd文件:

 USERNAME=admin
 PASSWORD=password
 sudo printf "$USERNAME:$(openssl passwd -crypt $PASSWORD)\n" >> .htpasswd

最初因为权限被拒绝错误而失败,我首先创建了一个空的.htpasswd,然后通过sudo chown max:max .htpasswd授予自己权限。

当我访问网站时,我确实看到了Auth提示,但即使输入正确的密码,我也会收到403错误。

我已经摆弄了一段时间,并继续挖掘谷歌搜索。但我很欣赏任何有关可能来源的提示。如果有人能够向我展示诊断Auth失败原因的可靠方法,那也很棒。

在我的access.log文件中,我有这样的条目:

73.170.238.232 - admin [05/Sep/2016:12:03:34 -0700] "GET /musicker/dist/ HTTP/1.1" 403 571 "-" "Mozilla/5.0 (X11; CrOS x86_64 8350.68.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"

但我在那里看不到很多有用的信息。你可以看到我试图访问/musicker/dist/的网站,而在Nginx中我的location /块正在抓住这个并添加auth_basic。

2 个答案:

答案 0 :(得分:4)

幸运的是,我在发布问题后不久就想到了这一点,但我认为以下信息可供其他寻求解决类似问题的人使用:

相关日志不在access.log中,而是在error.log

运行此操作向我显示.htaccess文件不在预期位置。然后我将它移动到正确的位置,并能够验证确定。

答案 1 :(得分:0)

尽管答案已经在这里,但我将尝试为没有获得上述答案的人解释更多。

好吧,我也得到了 403 Forbidden 并查看了日志:

2020/01/02 07:46:19 [错误] 21521#21521:* 258843 open() “ /etc/ngnix/.htpasswd”失败(2:无此类文件或目录),客户端: 10.3.11.168,服务器:localhost,请求:“ GET / reports / HTTP / 1.0”,主机:“ www.example.com”

尽管我已将.htpasswd精确地保存在/etc/nginx/.htpasswd的位置,但是找不到它。

然后,我将.htpasswd移至/var/www/html/.htpasswd,它解决了我的错误。

谢谢!