我正在安装nginx。 以下是我遵循的步骤:
编辑/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。