2013-04-17 140 views
1

我正在用nginx运行CentOS 6。它目前正在运行完美,我试图密码保护我的管理目录。我可以成功登录。但是,当我尝试查看目录中的主索引页(index.php)时,我得到了403 Forbbiden。Nginx密码保护403禁止

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”。我也尝试将owner船舶设置为“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

仔细阅读错误。你错过了一个index.html或类似的东西。

2

虽然这个问题很老,但我必须把我的解决方案放在这里来帮助别人。这个问题就像我在某个地方的痛苦。

我可能已经读出(并实施/尝试)几乎所有可能的线程可在网上(直到日期),但没有解决了这个“403禁止” nginx的问题都在一起:

我会记下从步骤开始:(阻止我的网站的访问):

1>我们将创建一个名为htpasswd的一个隐藏文件在/ etc/nginx的

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