Centos 8 环境下Nginx [emerg] open file ‘/etc/nginx/conf.d/my.conf’ failed (13: Permission denied)报错原因之一

Nginx配置虚拟主机时,遇到报错信息:Nginx [emerg] open file ‘/etc/nginx/conf.d/my.conf’ failed (13: Permission denied),很明显是文件权限问题。

my.conf是新增的虚拟主机配置,仔细检查了文件格式,没有任何问题,那么就一般是里面配置的网站目录问题了,例 :

...
   location / {
        root   /home/www;
        index  index.html index.htm index.php;
   }
...

root是磁盘上的网站根目录路径,需要Nginx有访问权限。

关键点来了,访问权限从大的层面上来讲有两个部分:

  1. linux系统默认的用户访问权限系统,可以通过命令chmod来修改,面向文件。
  2. SELinux增强访问系统,面向进程。
// 修改文件/目录访问权限
$ sudo chmod -R 777 /home/www

目前大多数Linux都默认开启了SELinux管理,因此即便要访问的目录权限为最高:777,如果进程(如Nginx)被SELinux拦截,依旧无法正常访问。

问题解决方法:首先保证root目录有基本的用户访问权限,其次是配置SELinux,让启动后的Nginx进程有访问权限,系统安全要求不高的情况下,简单点就直接关掉SELinux。

// A.临时
$ sudo setenforce 0

// B.永久, 将SELINUX=enforcing改为SELINUX=disabled
$ sudo /etc/selinux/config
...
SELINUX=disabled
...

(版权归cpury.com所有,转载请注明出处。)