nginx:“/root/index.html”禁止(13:权限被拒绝)

我正在安装nginx。 以下是我遵循的步骤:

  • 在/根目录下创buildindex.html文件
  • 编辑/etc/nginx/nginx.conf。 编辑后它看起来像这样:

    user nginx; worker_processes 1; error_log /var/log/nginx/error.log; ... http { ... server { listen 80 default_server; server_name my_domain_name.com; root /root; ... } 
  • 下面这个问题我放弃了权限:

gpasswd – 一个nginx的根

chmod g + x / root

(抱歉,无法正确格式化为代码)

服务nginx重启

我访问了my_domain_name.com,得到了403错误。 /var/log/nginx/error.log内容:

 "/root/index.html" is forbidden (13: Permission denied), client: 117.211.86.108, server: my_domain_name.com, request: "GET / HTTP/1.1", host: "my_domain_name.com" 

哦! 请不要禁用SELinux 。

首先 – 你真的需要从/root提供文件吗? 这实际上是root用户的主目录,而不是网站的根目录。 这实际上是一个非常糟糕的主意。 相反,使用/var/www/html或(我的首选项) /srv/www 。 如果您使用/root ,请确保您不暴露ssh密钥或authorized_keys文件,数据库密码或类似的东西。 这实在是一个糟糕的主意。

其次,不是禁用selinux(在这种情况下,它可以保护您免于危险),您应该正确配置SELinux。 在Fedora中,所设计的SELinux策略如此nginx与其他的web服务器共享,所以,使用/srv/www/yoursite作为根,

 chcon -R -t httpd_sys_content_t /srv/www/yoursite 

应该这样做。

我在一个亚马逊linux实例,不得不这样做

 sudo chmod o+x /home/ec2-user/ sudo service nginx restart 

不知道是什么安全隐患。

我在这里找到答案: http : //tweakandtune.blogspot.in/2009/03/centos-disable-selinux.html

我不得不禁用SELinux。