Nginx官方不内置Brotli支持,必须手动编译集成Google的ngx_brotli模块:先源码安装libbrotli库,再用--add-module或--add-dynamic-module参数将ngx_brotli编译进Nginx,最后在nginx.conf中配置brotli on等指令并验证Content-Encoding: br响应头。

开源 Nginx 本身不包含 Brotli 支持,所谓“支持 Brotli 的开源 Nginx 发行版”并不存在官方版本。实际方案是:在标准 Nginx 源码基础上,手动集成 Google 官方维护的 ngx_brotli 第三方模块,并完成完整编译流程。这需要分三步落地:先装底层依赖和 libbrotli 库,再将 ngx_brotli 编译进 Nginx,最后配置启用。
安装系统依赖与构建工具
确保基础编译环境就绪,否则 configure 会失败:
- 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 - 注意:
brotli-devel包不可靠,必须从源码编译安装 libbrotli,不能依赖系统包管理器
编译安装 libbrotli 核心库
ngx_brotli 模块依赖 libbrotli 的头文件和动态库,必须先部署到系统路径:
- 执行
git clone https://github.com/google/brotli.git && cd brotli - 推荐用 autotools 方式(兼容性更好):
./bootstrap && ./configure --prefix=/usr/local && make && sudo make install - 完成后运行
sudo ldconfig刷新动态库缓存,确保libbrotlienc.so和libbrotlidec.so可被链接
下载 Nginx 源码并集成 ngx_brotli 模块
使用稳定版 Nginx(如 1.24.0 或 1.25.3),不要用旧版或非官方分支:
- 下载 Nginx 源码并解压;同时执行
git clone https://github.com/google/ngx_brotli.git(建议放在同级目录) - 进入 Nginx 源码目录,运行 configure 命令,关键参数必须包含:
--add-dynamic-module=../ngx_brotli --with-compat
若需静态模块,可改用--add-module=../ngx_brotli(但要求模块与 Nginx 版本严格匹配) - 执行
make && sudo make install。默认安装到/usr/local/nginx,二进制为/usr/local/nginx/sbin/nginx
验证模块是否生效并启用压缩
编译成功不等于可用,必须逐项验证:
- 运行
nginx -V 2>&1 | grep brotli,应输出含ngx_http_brotli_filter_module或with-http_brotli_module的行 - 在
nginx.conf的http块中添加:brotli on;<br>brotli_comp_level 5;<br>brotli_types text/plain text/css text/javascript application/javascript application/json application/xml+rss;
- 重载配置:
nginx -t && nginx -s reload,再用curl -H "Accept-Encoding: br" -I https://yoursite.com/test.js检查响应头是否含Content-Encoding: br











