温馨提示×

nginx日志过大debian怎么办

小樊
42
2026-10-16 00:53:21
栏目: 智能运维

在 Debian 上,nginx 日志过大通常可以通过 日志轮转(logrotate)、关闭或降低日志级别、开启压缩 或 定期清理 来解决。下面按「推荐程度」给你一套实用方案。


一、最推荐:使用 logrotate(Debian 默认已装)

Debian 默认会用 logrotate 管理 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. 常见优化点

  • rotate 14 → 7(只保留 7 天)
  • daily → size 100M(按大小切)
  • compress(必须开)

示例(推荐):

/var/log/nginx/*.log {
    size 100M
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

3. 手动测试

logrotate -d /etc/logrotate.d/nginx   # 调试
logrotate -f /etc/logrotate.d/nginx  # 强制执行

二、nginx 本身配置优化

1. 降低 access.log 量(非常重要)

如果不需要详细日志:

access_log off;

或只记录关键信息:

log_format minimal '$remote_addr - $request_time';
access_log /var/log/nginx/access.log minimal;

2. 关闭不必要日志

error_log /var/log/nginx/error.log warn;

三、临时清理(应急)

# 清空日志(不删文件,nginx 不中断)
truncate -s 0 /var/log/nginx/access.log
truncate -s 0 /var/log/nginx/error.log

或

echo "" > /var/log/nginx/access.log

四、磁盘空间排查

df -h
du -sh /var/log/nginx/*

五、进阶方案(可选)

  • 日志外送:rsyslog / filebeat → Elasticsearch
  • access_log 到 /dev/null(不推荐生产)
  • 按虚拟主机分离日志,分别轮转

总结(最简做法)

✅ 用 logrotate
✅ 开 compress
✅ rotate 7
✅ 不需要就 access_log off

如果你愿意,可以把 当前 nginx 配置 或 磁盘占用截图 发我,我可以直接帮你改好。

0 踩