如何解决 centos 6 上的 nginx 403 错误

如何解决 centos 6 上的 nginx 403 错误

我在虚拟机上安装了 Centos 6.7 和 Gitlab。我设置了 gitlab 监听端口 8081。然后我设置了 nginx 监听端口 80。然而,在谷歌上搜索了几个小时并尝试了一些解决方案后,当我尝试访问我的网页时,仍然出现 403 错误。

我将 index.html 文件放在 /var/www/nginxsite.com/public_html 目录中,并将所有者和文件权限更改为如下所示:

dx-xr-xr-x root root /
dx-xr-xr-x root root /var
drwxr-xr-x nginx nginx /www
drwxr-xr-x nginx nginx /nginxsite.com
drwxr-xr-x nginx nginx /public_html
drwxr-xr-x nginx nginx /index.html

这是我的 /etc/nginx/sites-available/nginxsite.com.conf 配置文件:

server{
    listen 80;
    server_name nginxsite.com www.nginxsite.com
    location / {
        root /var/www/nginxsite.com/public_html;
        index index.html index.htm index.php;
        try files $uri $uri/ =404;
    }
    error page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

然后在我的主机(ubuntu 14.04)上我在 /etc/hosts 文件中添加了这两行:

192.168.1.130 my.gitlab.com
192.168.1.130 nginxsite.com

大家有什么建议吗?我的配置有错误吗?谢谢

答案1

感谢@Michael Hampton 的评论。

事实证明,从 Centos 6.6 开始,SElinux 对 nginx 施加了更严格的安全权限。以下命令解决了我的问题。

semanage fcontext -a -t httpd_sys_content_t /var/www/*
restorecon -Rv /var/www/*

实际上有两种方法可以解决这个问题,有关进一步的参考,请参阅这篇有用的文章:https://www.nginx.com/blog/nginx-se-linux-changes-upgrading-rhel-6-6/#gs.iz_rbNA

相关内容