您现在的位置:新疆网站建设-新疆网站制作-新疆二域设计>> 帮助中心>服务器相关>> Nginx如何设置自动清理日志?

Nginx如何设置自动清理日志?

作者:管理员  来源:互联网  发布时间:2025-11-10 10:10:24  点击数:0

在Nginx中,日志文件(包括访问日志和错误日志)会不断增长,如果不进行清理,可能会占用大量磁盘空间。以下是如何设置自动清理Nginx日志的几种方法:


方法一:使用 logrotate


1:创建 logrotate 配置文件

sudo nano /etc/logrotate.d/nginx


2:添加以下配置内容

/var/log/nginx/*.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    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:每天轮转

missingok:如果日志文件不存在也不报错

rotate 52:保留52个备份文件(约2个月)

compress:压缩旧的日志文件

delaycompress:延迟压缩前一个日志文件

notifempty:空文件不轮转

create 0640 www-data adm:创建新文件的权限和属主

postrotate:轮转后执行的命令,重新打开日志文件


方法二:手动配置更频繁的轮转


如果需要更频繁的轮转,可以修改配置:

/var/log/nginx/*.log {
    hourly
    missingok
    rotate 168  # 保留7天的每小时日志
    compress
    delaycompress
    notifempty
    create 0640 nginx nginx
    sharedscripts
    postrotate
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || true
    endscript
}


方法三:使用 crontab 自定义清理脚本


1:创建清理脚本

sudo nano /usr/local/bin/nginx_log_clean.sh
#!/bin/bash

# 清理超过30天的Nginx日志文件
find /var/log/nginx/ -name "*.log.*" -type f -mtime +30 -delete

# 重新加载Nginx(如果需要)
# systemctl reload nginx


2:给脚本执行权限

sudo chmod +x /usr/local/bin/nginx_log_clean.sh


3:添加到 crontab

sudo crontab -e


添加以下行(每天凌晨2点执行)

0 2 * * * /usr/local/bin/nginx_log_clean.sh


推荐使用 方法一(logrotate),这是最标准且可靠的日志管理方式。


关键字: Nginx 自动清理 日志

上一篇:Windows如何远程国产麒麟操作系统
下一篇:Linux系统命令:主机状态监控、环境变量、文件传输及压缩和解压缩

版权所有 新疆二域信息技术有限公司 All Rights Reserved 地址:乌鲁木齐市北京南路高新街217号盈科广场B座615 备案号:新ICP备14003571号-6 新公网安备 65010402000050号