Nginx如何设置自动清理日志?
作者:管理员 来源:互联网 发布时间:2025-11-10 10:10:24 点击数:0
在Nginx中,日志文件(包括访问日志和错误日志)会不断增长,如果不进行清理,可能会占用大量磁盘空间。以下是如何设置自动清理Nginx日志的几种方法:
方法一:使用 logrotate
1:创建 logrotate 配置文件
sudo nano /etc/logrotate.d/nginx
2:添加以下配置内容
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}配置参数说明:
daily:每天轮转
missingok:如果日志文件不存在也不报错
rotate 52:保留52个备份文件(约2个月)
compress:压缩旧的日志文件
delaycompress:延迟压缩前一个日志文件
notifempty:空文件不轮转
create 0640 www-data adm:创建新文件的权限和属主
postrotate:轮转后执行的命令,重新打开日志文件
方法二:手动配置更频繁的轮转
如果需要更频繁的轮转,可以修改配置:
/var/log/nginx/*.log {
hourly
missingok
rotate 168 # 保留7天的每小时日志
compress
delaycompress
notifempty
create 0640 nginx nginx
sharedscripts
postrotate
/bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || true
endscript
}方法三:使用 crontab 自定义清理脚本
1:创建清理脚本
sudo nano /usr/local/bin/nginx_log_clean.sh
#!/bin/bash # 清理超过30天的Nginx日志文件 find /var/log/nginx/ -name "*.log.*" -type f -mtime +30 -delete # 重新加载Nginx(如果需要) # systemctl reload nginx
2:给脚本执行权限
sudo chmod +x /usr/local/bin/nginx_log_clean.sh
3:添加到 crontab
sudo crontab -e
添加以下行(每天凌晨2点执行)
0 2 * * * /usr/local/bin/nginx_log_clean.sh
推荐使用 方法一(logrotate),这是最标准且可靠的日志管理方式。
上一篇:Windows如何远程国产麒麟操作系统
下一篇:Linux系统命令:主机状态监控、环境变量、文件传输及压缩和解压缩
相关内容:
