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

编程教程 > nginx (85) 2025-08-22 16:38:20

执行方案

使用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

插入内容

# 每天23:50点自动执行
50 23 * * *  /etc/nginx/nginx_log_rotate.sh

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

 

Nginx Docker安装方式执行

Docker标准输出分割

Ningx Docker版默认是将日志输出到 /dev/stdout 和 /dev/stderr 由 docker logs查看。更多docker logs 说明参考Docker logs 标准输出/错误日志查看和管理-XQLEE'Blog,这里不扩展讲解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
# 每天23:50点自动执行
50 23 * * * sudo docker exec -it nginx /bin/bash /etc/nginx/conf.d/log-split.sh

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
执行方案使用crontab + shell脚本方式,每天定时分隔access.log和error.log,防止文件过大带来的问题。 nginx 日志分隔脚本ng
Nginx 配置日志nginx默认的日志配置在nginx.conf配置文件。
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 安装参考:Linux yum nginx安装和nginx入门配置方法-XQLEE'BlogAlpine Linux nginx安装配
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配置文件检查命令正确命令:nginx -t -c /etc/nginx/nginx.conf错误命令:nginx -t -c /etc/nginx/conf.d/example.con...
nginx常规使用时作为http协议的反向代理,这里要讲的是非http的Mysql端口代理,理论支持其他协议nginx.conf配置如下:user nginx; worker_process...
alpineLinux安装nginx更新软件apkupdate安装nginxapkaddnginx查看nginx版本nginx-vnginx启停启动停止servicenginxstop重启ser...
最近网站被恶意访问了,了解了一些基础防护手段,nginx屏蔽ua访问 编写文件agent_deany.conf #使用方法 #创建目录 /etc/nginx/conf.d/deny...
需求将静态资源如css/js/图片缓存到不用每次都到后端服务去拿取,减少性能消耗。 配置nginx缓存配置缓存文件存放信息在nginx配置文件,httpd内部配
最近博客升级总是nginx原生的502页面,感觉有些不友好,特此研究了下502页面的配置nginx 502配置502页面核心配置 #502 page error_...
上传文件nginx报错413 Request Entity Too Large,Nginx文件上传大小限制设置原因请求实体太长了。一般出现种情况是Post请求时