Nginx 日志文件access.log/error.log分割轮换

博文分享 (4) 2025-08-22 15:51:00

执行方案

使用crontab + shell脚本方式,每天定时分隔access.log和error.log,防止文件过大带来的问题。

 

效果参考

# tree /var/log/nginx
/var/log/nginx/
├── access.log
├── archive
│   ├── access_2025-08-22.log.gz
│   └── error_2025-08-22.log.gz
├── error.log
└── log-split.sh

1 directory, 5 files

 

nginx 日志分隔脚本

log-split.sh

VIP资源,登录后查阅

此处内容需要开通会员后查阅(刷新)

登录/注册

脚本默认会删除超过30天的日志文件,相关命令为:find $ARCHIVE_DIR -type f -name "*.gz" -mtime +30 -exec rm -f {} \;

如果你不想删除或者需要调整保留时间,修改这句里面的参数即可。

命令解析:find $ARCHIVE_DIR -type f -name "*.gz" -mtime +30 -exec rm -f {} \;

用于清理指定目录中超过 30 天的 .gz 压缩文件

部分 说明
find 查找文件的命令
$ARCHIVE_DIR 环境变量,表示要搜索的归档目录(如这里的 /var/log/nginx/archive
-type f 只查找普通文件,不包括目录或链接
-name "*.gz" 文件名以 .gz 结尾(通常是 gzip 压缩文件)
-mtime +30 文件的修改时间超过 30 天前(即 30 天之前修改的)
-exec rm -f {} \; 对每个找到的文件执行 rm -f 删除,{} 代表文件名,\; 表示命令结束

 

Nginx 主机安装方式执行

添加定时任务

crontab -e

插入内容

# 每天凌晨1点自动执行
0 1 * * * /etc/nginx/nginx_log_rotate.sh

提示:脚本存放路径,根据自己放的来哦

 

Nginx Docker安装方式执行

将脚本映射到docker容器内部,如下面将conf.d目录映射给了nginx的/etc/nginx/conf.d

    volumes:
      - ./conf.d:/etc/nginx/conf.d

将脚本放到主机的./conf.d目录

 

主机添加crontab执行docker容器命令

sudo docker exec -it nginx /bin/bash /etc/nginx/conf.d/log-split.sh

命令解析

  • sudo docker exec -it 固定命令
  • nginx  nginx是nginx容器的名称,也可以使用容器id代替
  • /bin/bash /etc/nginx/conf.d/log-split.sh 执行容器里面的/etc/nginx/conf.d/log-split.sh脚本

添加到crontab 

crontab -e
# 每天凌晨1点自动执行
sudo docker exec -it nginx /bin/bash /etc/nginx/conf.d/log-split.sh

 


相关文章
执行方案使用crontab + shell脚本方式,每天定时分隔access.log和error.log,防止文件过大带来的问题。 效果参考# tree /va
nginx日志默认格式如下:$remote_addr-$remote_user[$time_local]"$request"$status$body_bytes_sent"$http_refer...
nginx开启gzip压缩配置配置参考:server{listen443ssl;server_namet.example.com;#charsetkoi8-r;#access_log/var/l...
nginx配置文件检查命令正确命令:nginx -t -c /etc/nginx/nginx.conf错误命令:nginx -t -c /etc/nginx/conf.d/example.con...
Linux(centos) nginx安装和nginx入门配置方法1.切换至root用户$su - 2.执行在线安装命令#yum install nginx -y 如果上面提示以下内容[root...
打开任务管理器发现一大堆nginx进程
nginx 跨域头统一配置 location / { add_header Access-Control-Allow-Origin *; add_header Acces...
nginx常规使用时作为http协议的反向代理,这里要讲的是非http的Mysql端口代理,理论支持其他协议nginx.conf配置如下:user nginx; worker_process...
alpineLinux安装nginx更新软件apkupdate安装nginxapkaddnginx查看nginx版本nginx-vnginx启停启动停止servicenginxstop重启ser...
部署目录结构tree -a ././├── conf.d #nginx 自定义配置映射目录│ ├── default.conf #存放一些通用配置(可选)│ ├
最近网站被恶意访问了,了解了一些基础防护手段,nginx屏蔽ua访问 编写文件agent_deany.conf #使用方法 #创建目录 /etc/nginx/conf.d/deny...
最近博客升级总是nginx原生的502页面,感觉有些不友好,特此研究了下502页面的配置nginx 502配置502页面核心配置 #502 page error_...
Nginx的upstream支持5种 分配方式,其中 轮询、权重、IP散列这三种为Nginx原生支持的分配方式,fair 和 url_hash 为第三方支持的分
解决centos系统使用yum安装nginx启动时报错[::]:80 failed (97: Address family not supported by protocol)一般默认的使用yu...
1.新增nginx屏蔽配置文件文件暂时为/etc/nginx/conf.d/deny_ua.config说明:文件名deny_ua.config,后缀为.config非.conf,原因是.con...