Nginx 日志出现权限错误(常见报错如 Permission denied、failed to open log file、cannot open log file 等),通常不是 Nginx 本身坏了,而是日志文件 / 目录的权限或属主不对。下面按常见场景一步步修。
查看 Nginx 错误日志或启动报错:
journalctl -u nginx
# 或
tail -n 50 /var/log/nginx/error.log
典型错误:
open() "/var/log/nginx/access.log" failed (13: Permission denied)
Nginx 默认运行用户是:
nginxwww-data查看当前用户:
ps aux | grep nginx
修复权限(以 www-data 为例):
chown -R www-data:www-data /var/log/nginx
chmod 755 /var/log/nginx
如果是 nginx 用户:
chown -R nginx:nginx /var/log/nginx
目录至少需要 755:
chmod 755 /var/log/nginx
日志文件一般:
chmod 644 /var/log/nginx/*.log
比如你手动 touch access.log,文件属主是你自己,Nginx 启不来。
解决:
rm /var/log/nginx/access.log
rm /var/log/nginx/error.log
systemctl restart nginx
(Nginx 会自动重建)
即使权限对,也可能被 SELinux 拦。
临时验证:
setenforce 0
systemctl restart nginx
如果好了,说明是 SELinux 问题,正确做法:
restorecon -Rv /var/log/nginx
或给日志目录正确上下文:
semanage fcontext -a -t httpd_log_t "/var/log/nginx(/.*)?"
restorecon -Rv /var/log/nginx
如果你在 nginx.conf 里写了:
access_log /data/logs/nginx/access.log;
必须保证:
chown -R www-data:www-data /data/logs/nginx
chmod 755 /data/logs/nginx
且每一层目录都要有执行权限(x)。
chown -R www-data:www-data /var/log/nginx
chmod 755 /var/log/nginx
chmod 644 /var/log/nginx/*.log
systemctl restart nginx
如果你愿意,可以把**具体报错信息 + 系统版本(Ubuntu/CentOS?)**发出来,我可以直接给你精确命令。