Brotli压缩与Nginx日志归档清理完全独立:Brotli作用于HTTP响应体,日志归档处理/var/log/nginx/下的文件;二者互不干扰,可共存,只需确保权限、路径和脚本逻辑分离即可。
Brotli 压缩和 Nginx 运行日志的自动归档清理是两件独立的事:Brotli 作用于 HTTP 响应体(比如网页、API 返回内容),而日志归档压缩处理的是 /var/log/nginx/ 下的 access.log、error.log 等文件。它们不交叉、不互斥,但可以共存——你完全可以在启用 Brotli 的同时,用 Shell 脚本安全地归档压缩日志。
Brotli 配置只影响客户端请求返回时的传输压缩,不会触碰磁盘上的日志文件。所以第一步是明确分离两者:
http 或 server 块中,只对匹配 brotli_types 的响应生效access_log /var/log/nginx/access.log 等指令指定,脚本操作的就是这个物理路径下的文件/var/log/nginx/ 目录权限允许运行脚本的用户读写(如 www-data 或 nginx 用户)/etc/logrotate.d/nginx 是否已存在轮转规则,避免与自定义脚本冲突你的日志归档脚本(如 /usr/local/bin/nginx-log-archive.sh)保持原有逻辑即可,无需调用 brotli 命令或修改 Nginx 配置。重点是保证它不依赖 Brotli,也不被 Brotli 影响:
gzip -c 压缩昨日日志,生成 .gz 归档包(brotli 命令不适用于日志归档场景,且无标准支持)> /var/log/nginx/access.log,这步不影响 Nginx 继续写入,也与 Brotli 无关/var/run/nginx.pid),脚本中 kill -USR1 的路径需同步修正,否则日志 reopen 失败/bin/bash、/usr/bin/gzip),防止 cron 环境下找不到命令因为 Brotli 不改变日志行为,但脚本执行失败常源于权限问题:
www-data 用户运行,crontab 也应由该用户编辑:sudo -u www-data crontab -e
15 2 * * * /usr/local/bin/nginx-log-archive.sh >> /var/log/nginx/archive.log 2>&1
archive.log 是为了留痕可查,比丢进 /dev/null 更利于排障/var/log/nginx/archive/ 的写权限跑通后快速确认三件事即可断定 Brotli 和日志归档各司其职:
Content-Encoding: br → Brotli 生效ls -l /var/log/nginx/archive/ 有 access.log-20260820.gz → 归档成功tail -n 1 /var/log/nginx/access.log 显示新请求日志 → 日志未中断、reopen 正常df -h /var/log 观察数日)→ 清理策略起效