温馨提示×

Debian如何压缩Nginx日志

小樊
40
2026-07-13 10:54:17
栏目: 智能运维

在 Debian 上压缩 Nginx 日志,常见且推荐的做法是使用 logrotate,这是 Debian 默认管理日志轮转的工具。下面按常见场景说明。


一、使用 logrotate(推荐 ✅)

1. 查看已有的 Nginx logrotate 配置

Debian 在安装 Nginx 后通常会自动生成配置:

cat /etc/logrotate.d/nginx

典型内容如下(不同版本略有差异):

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        systemctl reload nginx > /dev/null 2>&1
    endscript
}

2. 关键点说明

参数 作用
compress 使用 gzip 压缩旧日志
delaycompress 延迟一次压缩(方便排查)
rotate 14 保留 14 个历史日志
daily 每天轮转一次
postrotate 轮转后 reload Nginx,避免日志继续写入旧文件

默认已经支持压缩


二、手动测试 logrotate 是否生效

1. 强制执行一次

logrotate -vf /etc/logrotate.d/nginx

2. 查看结果

ls -lh /var/log/nginx/

你会看到类似:

access.log
access.log.1.gz
error.log
error.log.1.gz

三、如果系统没有 Nginx logrotate 配置

可以手动创建:

sudo nano /etc/logrotate.d/nginx

粘贴以下内容(适合大多数情况):

/var/log/nginx/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        systemctl reload nginx > /dev/null 2>&1
    endscript
}

保存后测试:

logrotate -vf /etc/logrotate.d/nginx

四、自定义压缩方式(可选)

1. 使用 bzip2 / xz

compresscmd /usr/bin/xz
uncompresscmd /usr/bin/unxz
compressext .xz

2. 仅压缩,不轮转(不推荐)

gzip /var/log/nginx/access.log.1

⚠️ 不建议手动 gzip,容易导致 Nginx 仍写入旧文件描述符。


五、常见问题排查

1. 日志不压缩?

检查:

logrotate -d /etc/logrotate.d/nginx

2. Nginx 还在写旧日志?

确保 postrotate 中有:

systemctl reload nginx

总结(最推荐方案 ✅)

Debian 上压缩 Nginx 日志的最佳方式:

  • 使用 /etc/logrotate.d/nginx
  • 启用 compress
  • 通过 systemctl reload nginx 让日志切换生效

如果你需要:

  • 大小 轮转
  • 小时 分割
  • 远程存储 / 清理策略

可以继续告诉我你的使用场景,我可以帮你定制配置。

0