Nginx密码保护403禁止

Nginx密码保护403禁止,nginx,Nginx,我正在使用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:

我正在使用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;
}

仔细阅读错误。您缺少index.html或类似文件。

虽然这个问题已经很老了,但我必须将我的解决方案放在这里以帮助其他人。这个问题就像我在某处的痛苦

我可能已经阅读(并实现/尝试)了几乎所有在线可用的线程(到目前为止),但没有一个线程一起解决了“403禁止”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根根根2月12日12:22.htpasswd