Nginx 源码编译集成 Brotli 的核心是静态编译 ngx_brotli 模块进二进制,需先装 autoconf/automake/libtool 等工具链,再编译安装 libbrotli 库并执行 sudo ldconfig,接着用 --add-module=../ngx_brotli 重新 configure、make install,最后通过 nginx -V 和 nginx -t 双验证模块集成成功,并在 http 块中配置 brotli on 且关闭 brotli_static 才能启用动态压缩。

Nginx 源码编译集成 Brotli 压缩算法,核心是让 ngx_brotli 模块真正进入 Nginx 二进制,而不是靠配置“开个开关”就生效。它不依赖宝塔或包管理器的预编译版本,而是从底层构建支持,才能稳定发挥 Brotli 比 Gzip 高 17–30% 的压缩优势。
确认系统具备编译基础环境
Brotli 编译链对工具链有明确要求,缺一不可:
- CentOS/RHEL:运行
yum groupinstall "Development Tools",再装openssl-devel pcre-devel zlib-devel git autoconf automake libtool - Ubuntu/Debian:执行
apt-get install build-essential libssl-dev libpcre3-dev zlib1g-dev git autoconf automake libtool
⚠️ 注意:autoconf、automake、libtool是编译libbrotli所必需,跳过会导致后续 Nginx 编译报 “cannot find brotli library” 错误。
先安装 libbrotli 核心库
Nginx 本身不带 Brotli 编解码能力,必须由 libbrotli 提供:
- 克隆源码:
git clone https://github.com/google/brotli.git && cd brotli - 推荐用 autotools 安装(兼容性更稳):
./bootstrap && ./configure --prefix=/usr/local && make && sudo make install
- 刷新系统动态库缓存:
sudo ldconfig,确保libbrotlidec.so和libbrotlienc.so可被识别
获取并关联 ngx_brotli 模块
- 下载与当前 Nginx 版本匹配的源码(如
nginx-1.24.0),同时拉取模块:git clone https://github.com/google/ngx_brotli.git
- 进入 Nginx 源码目录,复用原有
configure参数(可从nginx -V输出中复制),追加关键选项:./configure --add-module=../ngx_brotli [其他原有参数]
✅ 必须包含
--add-module,不能写成--add-dynamic-module(后者仅用于动态模块方案,此处为静态集成) - 执行
make && sudo make install,默认安装到/usr/local/nginx
验证模块是否真正集成成功
两个硬指标缺一不可:
-
nginx -V 2>&1 | grep with-http_brotli_module—— 有输出才说明编译进内核 -
nginx -t不报unknown directive "brotli"错误 —— 表明指令可被识别
配置启用需避开常见陷阱
模块集成只是第一步,配置不当仍无法生效:
- 在
http块中必须显式开启:brotli on; - 关闭
brotli_static on(尤其不要设为always),否则会优先查找.br文件,而忽略动态压缩逻辑 -
brotli_min_length建议设为1024,避免对小响应(如 API 短返回)徒耗 CPU -
brotli_types至少覆盖text/html text/css application/javascript,图片、视频等二进制类型无需加入
不复杂但容易忽略



















