我在虚拟机上安装了 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