问题
系统cent7,nginx运行出现403。查看/var/log/nginx/error.log错误如下
[error] 1028#1028: *3 opendir() "/xxx/xxx/xxx" failed (13: Permission denied), client: x.x.x.x, server: xxxx, request: "GET / HTTP/1.1", host: "x.x.x.x"
解决
显然是权限出了问题。
仔细查看后,发现同步过来的数据是属于用户www-data,而cent7下的nginx默认以nginx用户运行,且cent7下没有www-data用户。
遂新建www-data:
groupadd -g 33 www-data
useradd -g www-data -m -s /sbin/nologin -u 33 -d /var/www www-data
更改/etc/nginx/nginx.conf,将
user nginx;
改为:
user www-data;
我觉得稳了,让我们重启看看:
systemctl restart nginx
结果错误依旧。。。。
google之,发现是selinux的锅:
chcon -t httpd_sys_content_t -R /home/path/site
搞定
至于selinux的具体使用方法有些复杂,各位移步自己学习吧。
题外话
解决方案来自这里,有个很有意思的情况:
题主采纳了关闭selinux的方案,这和直接设置nginx的user为root的解决方案有异曲同工之妙。
中间两个有点答非所问,似乎没仔细看题主的情况。而靠谱的解决方案排最后,甚至净赞同数是-1.。。。。。