nginx 自定义web目录 permission denied (403错误 ) centos7 SELinux

原创 2016年02月25日 11:56:17

nginx 自定义web目录 permission denied (403错误 ) centos7 SELinux

如标题:

  1. 系统环境为centos7;
  2. web服务软件为:nginx;
  3. SELinux安全服务为开启状态,并且setenforce 值为enforcing,即强安全防护;

问题:nginx默认web目录为/usr/share/nginx/html,但是由于某些原因,我希望能自定义web目录到/www。就这样,让我遇见了大麻烦!!!(耗费N个工作日),但我访问我的网站时总是提示403错误!
先说当你希望自定义nginx目录时需要做些什么;免得朋友们着急:
如果你的系统为centos7,并且开启了SELinux(比文件类型更强的安全防护),那么在你自定义nginx 的web目录时,你需要执行以下两个命令:

 chcon -R -u system_u /xxx/
 chcon -R -t usr_t /xxx/

(/xxx/为 你自定义的web目录)。
是的,就这么简单,只要你的文件权限通过,再设置这个,你就可以成功的自定义web目录了。
当然,如果你只是开发环境,你大可以直接关闭selinux,或者执行 setenforce Permissive 命令,使selinux保持宽容状态。

好了,如果以上内容帮助你解决了问题,下面的内容你就可看可不看,我来更详细的描述下遇到这个问题,我都做了些什么。

由于我也是linux新手,对于linux的一些概念不熟悉,所以遇见问题很盲目的,最开始遇到这个问题,我只能想到是文件权限问题,所以我不断地调整文件所属用户及分组,调整nginx的user 用户,除非我把nginx的user设为root,不然访问网站时,始终报403错误。但是如果服务器真正运行,不可能将user设为root啊。所以我又尝试着将我的网站目录文件访问权限设为777,即没有权限限制,但是仍然报403错误!!!所以这时侯我真的很迷茫!!! 所以我百度,谷歌,但是都没有找到解决方法,类似的问题,大家都是关闭了SELinux(当时并不知道SELinux概念)的,遇到的问题只是文件权限问题。
我查看过nginx的错误文件,也看过/var/log/audit/audit.log文件,当时作为小白的我根本不会去分析。
我通过以下两个命令,实现了web访问,

grep nginx /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

但是在重启之后就失效了;
在stackoverflow看问题时,遇见有人通过setenforce Permissive 解决了问题,确实,通过执行这个命令,网站可以政策那个访问了,于是我就去学习了这个命令的作用,发现它是将SELinux的安全级别降低了,所以我还是不甘心,因为这个问题降低服务器安全防护级别岂不坑!所以我又将安全级别设回了Enforcing,于是我只得继续找寻解决方法;
慢慢地,我开始了解SELinux,知道了它的安全防御机制,还发现它有个文件增强类型控制,看到这里我就联想到了我的问题,既然我的普通文件权限没有问题,那么就一定是SELinux的增强类型的问题了,所以在谷歌我的问题时,就加上了SELinux 文件类型的关键字,果然我就搜到了一篇文章,然后接着,我就解决了问题。
文章链接:selinux相关的permission-denied问题

具体的内容,这篇文章里面有,我就不多说了,很感谢这次解决问题的经历,又让我学习了很多!

相关文章推荐

centos7 nginx 403 forbidden 原因及解决办法

selinux 开启导致 nginx 403If you still see permission denied after verifying the permissions of the pare...

centOS7,vsftpd,更改默认目录后nginx访问失败,403forbidden解决

博主环境centOS7,安装vsftpd后,浏览器访问,更改nginx默认目录后访问失败 修改了nginx配置: [root@localhost ~]# vim /usr/local/nginx/...

centos 7 上配置SELinux允许nginx指定/home/www作为网站根目录

现象: 1 启动nginx成功,使用wget 127.0.0.1得到内容,但是提示是禁止访问(403); 2 查看/var/log/nginx/error.log,提示访问/home/www/l....
  • qidizi
  • qidizi
  • 2014年11月19日 23:19
  • 11291

Nginx的Permission denied错误

Nginx的Permission denied错误环境: CentOS7问题描述今天搭建了nginx+uwsgi+django的环境,之后通过浏览器访问遇到下面问题: 2017/03/31 19:...

nginx connection failed due to Permission denied on CentOS7

今天,在CentOS上配了nginx,代理一个node http server,node server跑在3000端口上,nginx监听80端口,转发所有http请求到node server,配好之后...

centos7怎么访问虚拟机的web服务

第一种: 先看下防火墙状态:firewall-cmd --state 关闭防火墙再试试:systemctl stop firewalld.service 第二种,不想关闭防火墙  firewall-c...

CentOS7 添加FTP用户并设置权限

step 1 安装配置Vsftp服务器 一、配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。 ...

nginx权限403 500问题 及Selinux

现象安装完php-fpm、nginx之后,网站访问 静态资源 403,访问PHP 500。php-fpm 报错 mkdir() 无权限。解决mkdir() 无权限先检查selinux,一般的VPS都是...

nginx访问报错403 is forbidden

由于开发需要,在本地环境中配置了nginx环境,使用的是Centos 6.5 的yum安装,安装一切正常,于是把网站文件用mv命令移动到了新的目录,并相应修改了配置文件,并重启Nginx。 ...

解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法

虚拟机中通过yum安装nginx的,安装一切正常,但是访问时报403,nginx.config ps chmod reboot 于是查看nginx日志,路径为/var/log/nginx/error....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nginx 自定义web目录 permission denied (403错误 ) centos7 SELinux
举报原因:
原因补充:

(最多只允许输入30个字)