it编程 > 开发工具 > Docker

nginx中的日志切割详解

9人参与 2025-11-18 Docker

nginx 日志切割基础概念

nginx日志切割是指定期将 nginx 的访问日志和错误日志分割成多个文件,以便于管理和分析。

日志切割有助于防止日志文件过大,影响服务器性能,并且便于进行日志归档和分析。

相关优势

类型

应用场景

实现方法

1、使用 logrotate工具

logrotate是一个常用的日志管理工具,可以配置自动切割 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、使用脚本手动切割

也可以编写自定义脚本来实现日志切割。

示例脚本:

#!/bin/bash
#nginx日志文件所在目录
log_path=/data/nginx/logs/
#获取昨天的日期
yesterday=$(date -d "yesterday" +%y-%m-%d)
#获取pid文件路径
pid=/var/run/nginx.pid
cd ${log_path}
#分割日志
mv access.log access-${yesterday}.log
tar -zcvf access-${yesterday}.log.tar.gz access-${yesterday}.log --remove-files
#向nginx主进程发送usr1信号,重新打开日志文件
kill -usr1 `cat ${pid}`

解释:

检查日志文件大小,如果超过10mb,则进行切割。

使用时间戳命名新文件,并重新创建原日志文件。

发送 usr1 信号给 nginx 进程,使其重新打开日志文件。

遇到的问题及解决方法

日志切割后 nginx 不再写入新日志

原因:nginx 进程可能没有正确重新打开日志文件。

解决方法:

日志文件权限问题

原因:切割后的日志文件权限设置不正确,导致 nginx 无法写入。

解决方法:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

docker下nginx自定义日志并限制ip访问方式

11-18

Centos离线安装Nginx全过程

11-18

前端服务器部署Nginx +docker + ubuntu的完整过程

11-04

ubuntu设置docker以及容器开机自启方式

10-16

在Docker中实现Nginx平滑重启的几种方法

09-22

ProtoBuf详解

09-20

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论