centos 7上nginx 报错,open() "test.min.css" failed (13: Permission denied

OS: Centos7

Kernal: 3.10.0-327.el7.x86_64


在配置好django及相应的nginx反向代理后

发现web打开没有找到静态文件,nginx日志报permission denied, 检查过程如下:

1. 检查/var/www/static目录的属主和权限,发现属主非www(nginx worker以www用户启动),权限正确

    chown -R www.www /var/www/static

        修改后发现仍然没有静态文件


2. 没办法,google,发现stackoverflow如下回答:


24
down vote

I've just had the same problem on a CentOS 7 box.

Seems I'd hit selinux. Putting selinux into permissive mode (setenforce permissive) has worked round the problem for now. I'll try and get back with a proper fix.

在命令行执行指令setenforce permissive后刷新恢复

这种办法只是把selinux的安全级别降低了,至于如何彻底解决,还在研究


补充:

经过不停的google+各种关键词,终于找到彻底解决办法:

1. 安装audit.log的相关分析工具集

yum install setroubleshoot


2.  产生可访问的白名单

cat /var/log/audit/audit.log| grep nginx |audit2allow -M mynginx


3. 使白名单生效

semodule -i mynginx.pp


4. 恢复selinux默认功能

setenforce enforcing


再次刷新页面,静态文件正常,问题解决

附上selinux的介绍:

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件


你可能感兴趣的:(nginx,centos,Permission,selinux,deny)