如何清理nginx日志节省空间?操作步骤和流程

清理 Nginx 日志是服务器维护中非常重要的一步,尤其是在高并发或高访问量的网站中,日志文件可能在短时间内迅速膨胀,消耗大量磁盘空间。下面从清理思路、自动化脚本、日志轮转配置等多个角度,为你详细说明如何有效清理 Nginx 日志以节省空间。

一、Nginx 日志的默认位置与类型

Nginx 通常会生成以下两类日志:

访问日志(access.log)

记录所有HTTP请求,包括IP、时间、状态码等;

错误日志(error.log)

记录运行错误、配置异常、连接失败等信息。

默认日志路径可能如下:

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

也可以在配置文件中查看具体路径:

grep log /etc/nginx/nginx.conf

二、手动清理日志(适合一次性应急)

当服务器磁盘空间告急,可以手动清理日志:

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

这条命令不是删除文件,而是清空日志内容,不会影响正在运行的 Nginx 程序。

注意:

不要直接使用 rm 删除日志文件,否则 Nginx 仍然会尝试写入已经不存在的文件,导致错误;

清空后可执行 systemctl reload nginx 让它重新创建日志句柄。

三、使用 logrotate 自动轮转日志(推荐)

Linux 中推荐使用 logrotate 工具对日志进行周期轮转、备份与清理。

1. 创建 Nginx 日志轮转配置文件(如果未自动安装)

sudo nano /etc/logrotate.d/nginx

填入以下内容:

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

执行一次测试轮转:

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

查看压缩日志结果:

ls -lh /var/log/nginx/

你将看到如:access.log.1.gz, access.log.2.gz 等文件。

四、定期清理日志文件(cron+shell脚本方案)

如果不使用 logrotate,也可以自己写定时脚本清理旧日志。

示例脚本:

#!/bin/bash

# 设置日志路径
log_dir="/var/log/nginx"

# 清空主日志文件(避免直接删除)
> $log_dir/access.log
> $log_dir/error.log

# 删除7天前的历史日志文件
find $log_dir -type f -name "*.log.*" -mtime +7 -exec rm -f {} \;

# 可选:压缩2天前日志
find $log_dir -type f -name "*.log.*" -mtime +2 ! -name "*.gz" -exec gzip {} \;

添加到 crontab:

crontab -e

加入:

0 3 * * * /root/clear_nginx_logs.sh

每天凌晨3点执行清理任务。

五、禁用或减少日志(非推荐,视业务需求)

如果对访问日志没有依赖分析需求,可以在 Nginx 配置中禁用或缩减日志量。

禁用访问日志:

access_log off;

设置记录特定状态码:

只记录 500 错误以上的请求:

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

map $status $loggable {
    default 0;
    ~^[5] 1;
}

六、排查磁盘占用与清理建议

查看哪个目录占用最多空间:

du -sh /* 2>/dev/null | sort -hr | head -20

查看 /var/log/ 下前20大文件:

sudo find /var/log -type f -exec du -h {} + | sort -hr | head -20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华纳云IDC服务商

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值