nginx 日志权限问题一般体现在 无法写入日志、日志文件属主不对、或被其他进程/安全策略限制。下面按常见场景给你一套排查与解决办法。
常见报错:
Permission deniedopen() "/var/log/nginx/access.log" failednginx 写日志的权限 = nginx worker 进程的用户权限
查看 nginx 运行用户:
ps -ef | grep nginx
或看配置:
user www-data; # 或 nginx
默认日志目录:
/var/log/nginx/
解决:
chown -R www-data:www-data /var/log/nginx
chmod 755 /var/log/nginx
如果是自定义路径:
chown -R nginx:nginx /your/log/path
touch /var/log/nginx/access.log
chown www-data:www-data /var/log/nginx/access.log
chmod 644 /var/log/nginx/access.log
错误示例:
Permission denied (SELinux)
检查:
getenforce
解决:
semanage fcontext -a -t httpd_log_t "/your/log/path(/.*)?"
restorecon -Rv /your/log/path
或临时测试:
setenforce 0
logrotate 后 nginx 无法写日志。
在 /etc/logrotate.d/nginx 中加:
create 0644 www-data www-data
然后:
logrotate -f /etc/logrotate.d/nginx
解决示例:
mkdir -p /data/nginx/logs
chmod 777 /data/nginx/logs # 仅测试
或指定用户:
user: "1000:1000"
df -h
df -i
user www-data;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
目录权限:
/var/log/nginx 755 www-data:www-data
如果你愿意,可以把:
nginx -V 或配置片段发出来,我可以帮你精准定位。