天天看点

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社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件

继续阅读