Nginx 日志出现权限错误(常见如 Permission denied、failed to open log file 等),通常是因为 Nginx 进程无权访问日志文件或目录。下面按常见原因和解决办法说明。
open() "/var/log/nginx/access.log" failed (13: Permission denied)查看 Nginx 配置:
grep -R "user" /etc/nginx/nginx.conf
例如:
user www-data;
✅ 日志文件必须对该用户可读写
ls -l /var/log/nginx/
常见问题:
root600 或 644 但用户不对✅ 修正权限示例:
sudo chown -R www-data:www-data /var/log/nginx
sudo chmod -R 755 /var/log/nginx
不仅是文件,目录也要有执行权限:
namei -l /var/log/nginx/access.log
如果中间某层目录没有 x 权限,Nginx 无法进入目录。
修复:
sudo chmod 755 /var/log
sudo chmod 755 /var/log/nginx
查看:
getenforce
如果是 Enforcing,可能是 SELinux 阻止:
sudo setenforce 0 # 临时关闭测试
永久解决:
sudo semanage fcontext -a -t httpd_log_t "/custom/log/path(/.*)?"
sudo restorecon -Rv /custom/log/path
sudo aa-status
检查 nginx profile 是否限制日志路径。
确认 nginx.conf 或 site 配置中:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
❌ 错误示例:
/root/logs(Nginx 无权访问)如:
access_log /data/logs/nginx/access.log;
必须:
sudo mkdir -p /data/logs/nginx
sudo chown -R www-data:www-data /data/logs
修改后:
sudo nginx -t
sudo systemctl restart nginx
如果你愿意,可以把 具体报错信息 + nginx.conf 相关配置 发出来,我可以帮你精准定位。