Nginx 配置:
location /files/ {
alias /data/files/;
}
服务器修复了安全漏洞之后,突然,访问时,直接返回403
查看日志 /var/log/nginx/error.log,报的错大概是:
13 Permission denied…
各种搜索,大部分方案如下:
- 方案1:
nginx.conf 里面 user换成root – 不生效 - 方案2:
setenforce 0
这个生效了,,但由于是生产环境,如果关闭了selinux(Security-Enhanced Linux),在安全性上,可能过不去,于是不采用
额外附查看selinux状态命令:getenforce,sestatus
最后深究了Nginx403真正原因,大概就是selinux会给每个文件加标签,然后文件安全上下文必须匹配,否则无法访问。找到原因了,那么就把要访问的文件夹及文件配置一下
先查看文件目录情况:
ls -lrtZ /data/files/
unconfined_u:object_r:default_t:s0 files
接着使用chcon命令,修改文件的安全上下文
chcon -R -t httpd_sys_content_t /data/files/
执行完,终于可以访问了!
说明:
- /data/files/ 是Nginx需要访问的文件夹,就是配置里面的
- httpd_sys_content_t 是允许用户HTTP访问其目录
更多chcon命令,可以参考:https://www.linuxcool.com/chcon