发布于2026-07-14 阅读(0)
扫一扫,手机访问
Nginx跑久了,日志文件吃起磁盘来简直不讲道理。如果不定期清理,一个不小心就把你硬盘塞满,到时候服务挂了都不知道去哪哭。那么问题来了——怎么干净利落地搞定这些日志文件?其实有好几种路子可以走,从自动轮转到手动定时清空,总有一款适合你的运维习惯。

logrotate 工具,省心又专业logrotate 算是 Linux 系统下管理日志的标配工具了,能自动帮你压缩、轮转、甚至删掉过期的日志。安装也很简单,如果还没装:
sudo apt-get install logrotate # Debian/Ubuntu
sudo yum install logrotate # CentOS/RHEL
装好之后,关键一步是配置。编辑 /etc/logrotate.d/nginx 这个文件,写入下面这段配置:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
}
稍微解释一下每个参数的意思:
daily:每天轮转一次。如果你业务日志量不大,也可以改成 weekly 或 monthly。missingok:日志文件丢了也别报错,继续跑。rotate 7:只保留最近7天的日志,超过的就拜拜了。compress:旧日志自动压缩成 .gz 格式省空间。delaycompress:延迟一次轮转再压缩,方便你最后看一眼。notifempty:日志为空就不轮转了,别浪费动作。create 0640 www-data adm:新日志文件权限0640,属主是www-data,属组adm。配置写完后,跑一下强制测试,确保语法没问题:
sudo logrotate -f /etc/logrotate.d/nginx
如果你对 logrotate 不放心,或者就想手撸一个简单的清理脚本,那就用 Cron 吧。先打开 cron 编辑器:
crontab -e
然后塞一行定时任务,比如每天凌晨2点清空日志文件(不是删除,只是截断内容):
0 2 * * * find /var/log/nginx -type f -name "*.log" -exec truncate -s 0 {} \;
这段命令的意思是:在 /var/log/nginx 目录下找到所有 .log 文件,然后把它们的大小截断为0——本质上就是清空。优点是不用装额外工具,缺点是没有压缩备份,如果你需要查旧日志,得提前做好归档。
严格来说,这不是“清理”日志,而是通过调整刷新频率让日志文件不那么容易膨胀。编辑 Nginx 主配置文件 /etc/nginx/nginx.conf,在 http 块里设置:
http {
...
access_log /var/log/nginx/access.log main buffer=32k flush=300s;
error_log /var/log/nginx/error.log warn;
...
}
关键参数是 flush=300s,每300秒(5分钟)才会把缓冲区里的日志刷到磁盘一次。这样做能减少磁盘I/O压力,但日志文件的增长速度本身并没有变慢。所以这个方法更偏向“性能优化”,而不是真正的日志清理。想省磁盘空间,还得靠前面两种方法。
logrotate,配置文件里的路径、权限、用户组一定要跟你的实际 Nginx 运行环境对得上,否则新日志会写不进去。说到底,日志管理是个细水长流的活儿。选一种顺手的方法,配上合适的轮转策略,就能让系统一直保持清爽高效。别等到磁盘报警了才想起来去搞,那时候可就手忙脚乱了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8