Ubuntu 上 Nginx 日志级别设置指南
一 核心概念与级别
二 配置步骤
sudo nano /etc/nginx/nginx.confsudo nano /etc/nginx/sites-available/your-site.conferror_log /var/log/nginx/error.log warn;
server {
listen 80;
server_name example.com;
error_log /var/log/nginx/example.error.log warn;
access_log /var/log/nginx/example.access.log;
...
}
access_log off;
sudo nginx -t
sudo systemctl reload nginx # 或 restart
tail -f /var/log/nginx/error.log
以上路径、指令与生效方式适用于 Ubuntu 上的常见 Nginx 部署。
三 常见场景与示例
server {
listen 80;
server_name dev.example.com;
error_log /var/log/nginx/dev.error.log debug;
access_log /var/log/nginx/dev.access.log;
...
}
map $status $loggable {
~^[45] 1;
default 0;
}
access_log /var/log/nginx/error_access.log combined if=$loggable;
error_log /dev/null crit;
access_log off;
上述做法利用了 error_log 的级别与上下文覆盖、access_log 的开关与条件日志能力。
四 日志轮转与磁盘保护
/var/log/nginx/*.log {
daily
rotate 52
compress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
/var/log/nginx/*.log {
size 100M
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
以上配置确保日志不会无限增长,并在轮转后继续写入新文件。
五 实用命令与最佳实践
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log | grep "404"
sudo nginx -t 校验;优先使用 reload 而非 restart 减少中断;仅在必要时开启 debug,生产环境建议使用 warn/error 并结合条件日志降低噪声与 I/O。