商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 怎样压缩Nginx日志文件大小

怎样压缩Nginx日志文件大小

  发布于2026-07-03 阅读(0)

扫一扫,手机访问

Nginx 跑久了,日志文件难免越积越厚。别看 access.log 和 error.log 平时不起眼,一旦服务器流量上来,几天不清理,几十个 GB 的磁盘空间说没就没。所以,压缩日志这事儿,其实是个基本功。

怎样压缩Nginx日志文件大小

1. 使用 logrotate 工具

logrotate 几乎是 Linux 系统上日志管理的标配工具,专门用来自动压缩、轮转、删除老日志。配置起来也不复杂,几步就能搞定。

配置 logrotate

  1. 先创建或编辑 Nginx 的日志轮转配置文件:

    sudo nano /etc/logrotate.d/nginx
  2. 然后把下面这段配置贴进去:

    /var/log/nginx/*.log {
        daily
        missingok
        rotate 7
        compress
        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 表示每天轮转一次;
    • rotate 7 保留最近 7 天的日志,超过的自动删除;
    • compress 就是压缩旧日志,默认用 gzip;
    • notifempty 表示如果日志文件是空的,就不轮转,避免白费力气;
    • create 0640 www-data adm 指定新日志文件的权限和属主。
    • postrotate 里的脚本会在轮转完成后向 Nginx 主进程发送 USR1 信号,让它重新打开新的日志文件继续写。
  3. 配置写完后,可以用以下命令测试一下,确保没语法错误:

    sudo logrotate -f /etc/logrotate.d/nginx

    加上 -f 参数会强制轮转一次,方便验证效果。

2. 手动压缩日志文件

如果你不想依赖自动工具,或者只是临时处理一下,手动压缩也完全可以。

压缩日志文件

sudo gzip /var/log/nginx/access.log
sudo gzip /var/log/nginx/error.log

创建符号链接

直接压缩后,Nginx 会找不到原来的日志文件,所以需要先重命名原文件,再创建一个符号链接指向压缩后的文件,这样 Nginx 才能继续正常写入。

sudo mv /var/log/nginx/access.log /var/log/nginx/access.log.1
sudo ln -s /var/log/nginx/access.log.1.gz /var/log/nginx/access.log
sudo mv /var/log/nginx/error.log /var/log/nginx/error.log.1
sudo ln -s /var/log/nginx/error.log.1.gz /var/log/nginx/error.log

注意:符号链接指向的是压缩后的 .gz 文件,Nginx 写日志时会通过链接直接写入该文件(内容会被追加到压缩包内,但实际写入的是未压缩的流,这个机制比较特殊,不过大多数场景下够用)。更稳妥的做法还是用 logrotatecompress 选项,它内部处理得更好。

3. 调整日志级别

如果日志文件实在太大,而且很多内容其实没必要记录,可以降低日志级别。比如,把 info 改成 warnerror,就能大幅减少输出量。

修改配置文件

编辑 Nginx 主配置文件 /etc/nginx/nginx.conf 或某个站点的配置,找到 http 块里的 log_level 设置:

http {
    log_level info;
    # 可以改为 notice, warn, error 等...
}

重新加载配置

sudo nginx -s reload

改完之后记得重新加载,不用重启服务。

4. 使用日志分割工具

除了 logrotate,还有一些更专业的日志管理工具,比如 rsyslogfluentd。它们不仅能做压缩和轮转,还能做集中收集、过滤、转发等高级功能。如果你的服务器集群规模较大,或者日志需要汇总分析,可以考虑引入这类工具。但对大多数单机场景来说,logrotate 已经足够用了。

总之,压缩 Nginx 日志这件事,方法不少,核心思路就两个:一是自动轮转压缩,二是减少不必要的内容输出。选一个最适合自己维护习惯的方案就好。

本文转载于:https://www.yisu.com/ask/91381654.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注