我使用nginx运行CentOS 6。它目前运行正常,我正在尝试密码保护我的管理目录。我可以成功登录。但是,当我尝试查看目录中的主索引页面(index.php)时,我得到了403 Forbbiden。
2013/04/18 02:10:17 [error] 17166#0: *24 directory index of "/usr/share/ngin/html /somedir/" is forbidden, client: XXX, server: mysite.com, request: "GET /somedir/ HTTP/1.1", host: "mysite.com"
我对“.htpasswd”文件进行了双重检查。它与chmod 640属于“root:root”。我也尝试将所有者设置为“nginx:nginx”,错误仍然存在。
这就是我让htpasswd工作的方式:
location ~ ^/([^/]*)/(.*) {
if (-f $document_root/$1/.htpasswd) {
error_page 599 = @auth;
return 599;
}
}
location @auth {
auth_basic "Password-protected";
auth_basic_user_file $document_root/$1/.htpasswd;
}
答案 0 :(得分:2)
虽然问题已经很久了,但我必须把我的解决方案放在这里帮助别人。这个问题就像我在某个地方的痛苦。
我可能已经读出(并实现/尝试过)几乎所有在线可用的线程(直到日期)但没有解决这个问题" 403 Forbidden" nginx问题全能:
我将从开头写下步骤:(阻止我的网站访问):
1>我们将在/ etc / nginx
中创建一个名为.htpasswd的隐藏文件sudo sh -c "echo -n 'usernamee:' >> /etc/nginx/.htpasswd"
2 - ;现在将加密密码添加到给定的用户名
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
这将要求您输入密码并确认。
3>现在我们需要设置nginx以在提供任何内容之前检查我们新创建的.htpasswd。
location / {
try_files $uri $uri/ /index.php?$query_string; # as per my configuration
auth_basic "Authorized access only";
auth_basic_user_file .htpasswd;
}
4>最后重启服务器才能生效
sudo service nginx restart
现在浏览网址:
请注意:我没有对权限进行任何更改。默认情况下, htpasswd 的文件权限将在创建时设置,如下所示:
-rw-r--r-- 1 root root 42 Feb 12 12:22 .htpasswd
答案 1 :(得分:0)
仔细阅读错误。您缺少index.html或类似的内容。