直接编译 Nginx 源码集成 Brotli 需先安装 libbrotli 库(如 libbrotli-dev),再下载 google/ngx_brotli 并初始化子模块,然后配置 Nginx 时用 --add-dynamic-module 和 --with-compat 编译生成 .so 模块,最后在 nginx.conf 中 load_module 并配置 brotli 相关指令启用。

直接编译 Nginx 源码集成 Brotli,核心是把 google/ngx_brotli 模块作为第三方模块加入 configure 流程,并确保底层 libbrotli 库已就位。这不是装个包就能用的功能,必须走完整编译链,但步骤清晰、可控性强。
先装好 libbrotli 库(硬依赖)
Brotli 模块不能脱离它的 C 语言基础库独立运行。Nginx 编译时需要头文件(brotli/encode.h)和链接库(libbrotlienc.so),所以必须提前安装:
- Ubuntu/Debian:
sudo apt-get install libbrotli-dev - CentOS/RHEL:
sudo yum install brotli-devel或dnf install brotli-devel - Alpine:
apk add brotli-dev - 源码安装(通用,推荐用于版本对齐):
git clone https://github.com/google/brotli.git && cd brotli./configure-cmake && cmake --build . --target install
安装后执行sudo ldconfig刷新系统动态库缓存
下载并准备 ngx_brotli 模块
官方模块地址是 google/ngx_brotli,注意它依赖子模块 deps/brotli:
git clone https://www.php.cn/link/2a085e05b575fb1e26aed5121433ecfd.git-
cd ngx_brotli && git submodule update --init(这步不能跳,否则 configure 会报找不到 brotli 头文件) - 确认路径固定,比如放在
/path/to/ngx_brotli,后续 configure 要引用这个绝对路径
下载 Nginx 源码并 configure 编译
务必使用与生产环境一致的 Nginx 版本(如线上是 1.24.0,就下 nginx-1.24.0.tar.gz):
- 解压后进入 Nginx 源码目录
- 运行 configure,关键参数包括:
--add-dynamic-module=/path/to/ngx_brotli(生成 .so 动态模块)--with-compat(启用动态模块兼容性,必须加)
其他常规项如--prefix=/usr/local/nginx、--with-http_ssl_module等按需保留 - 执行
make modules(只编译模块,不覆盖 nginx 二进制)
成功后,objs/ngx_http_brotli_filter_module.so就生成了 - 复制该 .so 文件到目标路径,例如:
sudo cp objs/ngx_http_brotli_filter_module.so /usr/local/nginx/modules/
配置启用并验证
模块文件就位后,还需两处配置才能真正生效:
- 在
nginx.conf最开头(user或worker_processes后)、全局作用域添加:load_module modules/ngx_http_brotli_filter_module.so; - 在
http块中开启压缩逻辑:brotli on;brotli_comp_level 4;brotli_min_length 1024;brotli_types text/plain text/css application/javascript application/json text/html image/svg+xml;
注意:如果同时启用了 gzip,建议显式设gzip off;或确保 Brotli 优先级更高 - HTTPS 是前提:浏览器只在 TLS 连接中协商
br编码,纯 HTTP 不会返回Content-Encoding: br - 验证方式:
curl -I -H "Accept-Encoding: br" https://yoursite.com/test.js
查看响应头是否含Content-Encoding: br;也可用nginx -t检查语法,nginx -V | grep brotli确认模块被识别


















