近日使用虚拟机调试nginx得时候,有遇见一个让人头疼得事。使用nginx架设了一个静态网站,但是老是报错403 forbidden错误。
排错
既然报错了 ,我们就先去/var/log/nginx/error.log中查看报错信息。
结果发现是找不到文件。出现这个问题,我得第一反应就去检查nginx得配置文件了,结果反复检查确定配置文件没用问题。
检查权限
如果nginx没有web目录的操作权限,也会出现403错误 。然后果断去检查web目录得权限问题,没有问题,为了确保无疑,我继续使用chmod -R 777 将目录重新给了一边权限。应该没用问题了,可是竟然扯淡得还是403错误。
作为一个nginx得新手,我得网站也是在centos上面架设得,上面一个wordpress博客,一个静态网站之前完全没有遇到这个问题。
403元凶SELinux
经过各种百度终于在一篇排名靠后的文章中找到了答案,原因是红帽系统中的selinux在作怪。selinux是红帽系列系统中的一个安全机制。控制者系统中的很多权限问题。我们的403报错就是它在作怪了。
SELinux一共有3种状态,分别是Enforcing,Permissive和Disabled状态。第一种是默认状态,表示强制启用,第二种是宽容的意思,即大部分规则都放行。第三种是禁用,即不设置任何规则。
解决办法
查看当前selinux的状态,如果是强制启动则改为宽容或者禁止状态。
1.使用 getenfore命令查看selinux状态,显示Enforcing 说明就是它在影响
2. setenforce permissive #将状态改为宽容模式,这时候我们发现网站已经可以正常访问了,但是这个只是临时更改,当我们下次重启机子又会自动恢复,所以我们要一劳永逸
3. vi /etc/selinux/config #因此我们需要通过修改设置文件,让某个配置永久生效。配置文件的位置是:/etc/selinux/config 。
4. 将config中的 SELINUX=enforcing 改为SELINUX=permissive 或者更改为disable保存退出
5.reboot #重启机子生效
评论抢沙发