centOS7, nginx 403 forbidden

阅读前:

  1. 此文排除了nginx存放静态文件目录与配置的静态文件目录不一致的情况。你可以百度此原因

  1. 本文探讨的是centOS7的selinux安全机制,会导致文件访问受限,从而nginx报错403

本文基于上文 nginx启动报错[emerg]bind xxx failed, permission denied(原因是selinux 安全机制端口限制) 的进一步发现问题及探究。

上文情况解决后,然后访问nginx代理的前端,会出现nginx 403 forbidden的问题,这个问题依然源于 selinux 安全机制

先简单科普一下,selinux 安全机制分为进程安全上下文、文件安全上下文。两者保持一致性则可通行!selinux 安全机制在上述问题上放行了端口限制,还需要 文件安全 限制的开放。

另外,可在某些命令加参数 -Z 来查看selinux 信息

分析验证:

  1. 首先,查看nginx 进程的selinux 信息

ps -efZ | grep nginx

结果为:

注意,红色方框内,通过冒号分隔的四个字段,代表:用户:角色:类型:级别,这些描述 selinux 的安全上下文(详知请百度),先注意第三个字段为 httpd_t 类型

  1. 查看nginx 静态文件目录(centOS下是 /usr/share/nginx/html,或者你自定义前端dist的目录)的 selinux 信息

PS:注意,我这里的目录是自定义的目录,总之是你静态文件的目录

可看到红色框内,第三个字段为 user_home_t 类型,与 nginx 进程的 httpd_t 不同,导致nginx进程无法访问该目录以及相应的文件!

因为 nginx 进程只能访问httpd_sys_content_t类型的文件,而 httpd可以读httpd_sys_content_t类型的文件。

  1. 于是,需要将该目录及子文件目录的 SELinux 信息修改为 httpd_sys_content_t

semanage fcontext -a -t httpd_sys_content_t '/yourpath/dist(/.*)?'

并刷新文件上下文信息即可(不刷新未更新,可自行查看 selinux 信息验证)

restorecon -R /yourpath/dist

总结:centOS7的selinux安全机制默认限制文件上下文访问,需要放行。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值