温馨提示×

怎样清理debian nginx旧日志

小樊
41
2026-09-10 07:25:11
栏目: 智能运维

在 Debian 上清理 Nginx 的旧日志,常见做法有 手动删除 / 截断使用 logrotate(推荐)、以及 定时任务自动清理。下面按实用程度说明。


一、先确认 Nginx 日志位置

默认路径一般是:

/var/log/nginx/access.log
/var/log/nginx/error.log

也可能在虚拟主机配置中自定义,例如:

access_log /var/log/nginx/example.access.log;

二、使用 logrotate(推荐,Debian 默认已配置)

Debian 通常已经为 Nginx 配置了 logrotate:

/etc/logrotate.d/nginx

1. 查看当前配置

cat /etc/logrotate.d/nginx

典型内容:

/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
}

2. 含义说明

  • daily:每天轮转
  • rotate 14:保留 14 天
  • compress:压缩旧日志
  • kill -USR1:通知 Nginx 重新打开日志文件

3. 手动执行一次(测试)

logrotate -f /etc/logrotate.d/nginx

三、手动清理旧日志(临时处理)

1. 删除 N 天前的日志

find /var/log/nginx -name "*.log.*" -mtime +14 -delete

2. 清空当前日志(不删除文件)

truncate -s 0 /var/log/nginx/access.log
truncate -s 0 /var/log/nginx/error.log

: > /var/log/nginx/access.log

⚠️ 清空后一定要让 Nginx 重新打开日志:

nginx -s reopen
# 或
kill -USR1 $(cat /var/run/nginx.pid)

四、禁止或限制日志(可选)

1. 关闭 access 日志

access_log off;

2. 只记录错误

access_log /var/log/nginx/access.log combined if=$loggable;

五、自动化清理建议(最佳实践)

✅ 使用 logrotate(系统级、安全)
❌ 不建议直接 rm access.log


如果你愿意,可以贴一下:

  • /etc/logrotate.d/nginx
  • nginx -V
  • 当前 /var/log/nginx 的文件列表

我可以帮你定制一套清理策略。

0