Nginx本身不内置Brotli压缩,必须编译集成google/ngx_brotli模块:先安装libbrotli库并刷新ldconfig,再下载ngx_brotli并初始化子模块,然后复用原configure参数追加--add-module编译Nginx,最后在nginx.conf中配置brotli on等指令并重载。

确认当前环境与依赖
先检查系统是否具备基础编译能力:
- 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
这些是编译 Nginx 和 Brotli 模块的硬性前提,缺一不可。
安装 libbrotli 核心库
Brotli 模块依赖 Google 官方的编码/解码库 libbrotli,必须先装好并让系统能链接到它:
- 执行:
git clone https://github.com/google/brotli.git && cd brotli - 推荐用传统方式编译安装(兼容性更稳):
./bootstrap && ./configure --prefix=/usr/local && make && sudo make install - 安装完务必运行:
sudo ldconfig,刷新动态库缓存,否则 Nginx 编译时会报libbrotlidec.so: cannot find
下载并准备 ngx_brotli 模块
模块源码需与你的 Nginx 版本匹配(例如你用的是 Nginx 1.24.0,就不要拉最新 master 分支乱试):
- 执行:
cd /www/server && git clone https://github.com/google/ngx_brotli.git(宝塔用户建议放在此路径) - 进入模块目录:
cd ngx_brotli && git submodule update --init(这步关键,否则缺少 deps 子模块会编译失败)
重新编译 Nginx 并集成模块
不能覆盖安装,必须复用原有配置参数,只新增模块引用:
- 查原参数:
nginx -V 2>&1 | grep "configure arguments:",复制整行输出 - 下载对应版本的 Nginx 源码(如
nginx-1.24.0.tar.gz),解压后进入src目录 - 在原参数末尾追加:
--add-module=/www/server/ngx_brotli(路径必须准确) - 执行
./configure [完整参数]→make(注意:只 make,不 make install) - 备份旧二进制:
mv /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.bak - 替换新二进制:
cp objs/nginx /www/server/nginx/sbin/ - 验证:
/www/server/nginx/sbin/nginx -t,成功后service nginx restart
在 nginx.conf 中启用压缩规则
Brotli 不兼容 gzip 配置,也不能写在顶层 http 块就全局生效,必须显式开启并限定 MIME 类型:
- 打开
/www/server/nginx/conf/nginx.conf - 在
http { ... }块内添加:
brotli on; brotli_comp_level 6; brotli_types text/plain text/css text/javascript application/javascript application/json application/xml+rss application/xhtml+xml image/svg+xml;
保存后重载配置:nginx -s reload。用 curl -I -H "Accept-Encoding: br" https://yoursite.com/test.js 查看响应头是否含 Content-Encoding: br。


















