在 Nginx 运行中,日志文件的权限设置主要涉及几个方面:
下面按常见场景说明。
Nginx 配置中通常有:
user www-data; # 或 nginx
Nginx worker 进程会以该用户运行,因此需要:
chown -R www-data:adm /var/log/nginx
chmod 0755 /var/log/nginx
说明:
www-data:Nginx 用户(CentOS 常为 nginx)adm:允许系统管理员查看日志(可选)chmod 0640 /var/log/nginx/*.log
chown www-data:adm /var/log/nginx/*.log
推荐权限:
如果开启 SELinux,仅改权限可能不够:
ls -Z /var/log/nginx
若类型不对:
semanage fcontext -a -t httpd_log_t "/var/log/nginx(/.*)?"
restorecon -Rv /var/log/nginx
若你修改了日志路径,例如:
access_log /data/logs/nginx/access.log;
必须确保:
mkdir -p /data/logs/nginx
chown -R www-data:www-data /data/logs/nginx
chmod 0755 /data/logs/nginx
否则 Nginx 启动会报错:
failed to open log file
Nginx 日志常被 logrotate 切割:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
关键点:
create 0640 www-data admUSR1 信号让 Nginx 重新打开日志(不会丢日志)ps -ef | grep nginx
ls -l /var/log/nginx
nginx -t
✅ 推荐:
07550640❌ 不推荐:
777 权限如果你能告诉我:
我可以给你精确到命令的权限方案。