需将/var/log/nginx和/var/cache/nginx目录属主属组改为nginx:nginx,并设为755权限,启用SELinux时还需restorecon恢复上下文,最后重启Nginx。

CentOS 下通过 yum 安装 Nginx 后,部分目录(如 /var/log/nginx、/var/cache/nginx)默认属主属组可能为 root:root,而 Nginx 工作进程通常以 nginx:nginx(或 www-data,但 CentOS 默认是 nginx)身份运行。若权限不匹配,会导致日志写入失败、缓存无法生成等错误。
确认 Nginx 运行用户和组
查看主配置文件中定义的用户:
grep "^user" /etc/nginx/nginx.conf
典型输出为:user nginx;
说明工作进程以用户 nginx、组 nginx 运行(未显式指定组时,默认使用同名组)。
也可用以下命令验证系统是否存在该用户/组:
id nginx
需调整属主属组的关键目录
以下路径在 yum 安装后常为 root:root,但 Nginx 需要读写权限:
-
/var/log/nginx—— 日志目录,worker 进程需追加写入 access.log / error.log -
/var/cache/nginx—— 缓存目录(如 proxy_cache、fastcgi_cache),需读写执行权限 -
/var/run/nginx.pid(或/run/nginx.pid)—— PID 文件,由 master 进程创建,通常由 systemd 管理,一般无需手动改属主;但若启动报 “permission denied” 且该文件已存在,可检查其权限
执行属主属组修正操作
运行以下命令统一设置(假设用户/组均为 nginx):
sudo chown -R nginx:nginx /var/log/nginx<br>sudo chown -R nginx:nginx /var/cache/nginx
补充建议:
- 确保目录有适当权限:日志和缓存目录建议至少为
755(即drwxr-xr-x),可执行:sudo chmod 755 /var/log/nginx /var/cache/nginx - 若启用 SELinux(CentOS 默认开启),还需恢复默认上下文:
sudo restorecon -Rv /var/log/nginx /var/cache/nginx - 重启 Nginx 生效:
sudo systemctl restart nginx
验证是否生效
检查关键目录归属:
ls -ld /var/log/nginx /var/cache/nginx
应显示类似:drwxr-xr-x. 2 nginx nginx ... /var/log/nginxdrwx------. 5 nginx nginx ... /var/cache/nginx
再查看 Nginx 错误日志确认无权限类报错:sudo tail -f /var/log/nginx/error.log
正常启动后应无 open() "/var/log/nginx/access.log" failed (13: Permission denied) 类错误。

















