nginx启用brotli需源码编译集成ngx_brotli模块并显式配置,非简单修改conf即可生效;验证需用nginx -v或curl检查content-encoding: br,配置时须在http块中设置brotli on及参数,支持与gzip共存。

要让 Nginx 真正用上 Google 开发的 Brotli 压缩算法,必须源码编译集成 ngx_brotli 模块,并正确配置——它不是改几行 conf 就能生效的功能,而是依赖底层库和编译时显式启用的特性。Brotli 对 HTML、CSS、JS 等文本资源压缩率比 Gzip 高 17–30%,现代浏览器(Chrome、Firefox、Edge、Safari 11+)都原生支持,且可与 Gzip 共存,浏览器会自动按 Accept-Encoding: br 优先选择。
确认当前 Nginx 是否已支持 Brotli
别被 Nginx 版本号迷惑,1.24 或更高版官方默认仍不带 Brotli。执行以下命令验证:
-
nginx -V 2>&1 | grep -i brotli—— 若无输出,说明未编译进模块 -
nginx -V 2>&1 | grep "with-http_brotli_module\|ngx_brotli"—— 查看 configure 参数是否含该模块 - 或直接请求一个 JS 文件:
curl -I -H "Accept-Encoding: br" https://yoursite.com/app.js,检查响应头是否有Content-Encoding: br
编译安装 ngx_brotli 模块(推荐宝塔环境)
宝塔面板默认 Nginx 不含 Brotli,需重编译。最稳妥方式是通过软件商店「编译安装」并勾选自定义模块:
- 登录宝塔 → 【软件商店】→ 找到已安装的 Nginx → 点击【卸载】(操作前务必创建系统快照 + 备份
/www/server/nginx/conf) - 返回【软件商店】→ 【运行环境】→ 找到 Nginx → 点击【安装】→ 选择【编译安装】
- 勾选【自定义模块】,在输入框中填写:
--add-module=/www/server/ngx_brotli - 点击【提交】,等待自动下载、编译、安装完成(过程约 3–8 分钟)
- 完成后执行
nginx -V再次确认输出中含ngx_brotli或http_brotli_filter_module
配置 nginx.conf 启用 Brotli 压缩
模块就位后,必须在 http{ } 块内显式开启并调优,不能只写 brotli on 就完事:
- 进入宝塔 → 【软件商店】→ 【Nginx】→ 【设置】→ 【配置修改】
- 在
http { }区域(非 server 或 location 内)添加以下内容:
brotli_comp_level 6;
brotli_min_length 512;
brotli_types text/plain text/css text/javascript application/javascript application/json application/xml+rss image/svg+xml;
brotli_static off;
brotli_vary on;
说明:
• brotli_comp_level 6 是 CPU 与压缩率较优平衡点,1–11 可调,生产环境不建议超 7
• brotli_static off 表示不查找预生成的 .br 文件,而是实时压缩上游响应(适合动态内容)
• brotli_vary on 让 CDN 和浏览器缓存区分 br 与 gzip 版本,避免错乱
验证与注意事项
保存配置后,执行 nginx -t && systemctl reload nginx(或宝塔面板内点击【重载配置】):
- 用 Chrome 打开开发者工具 → Network → 刷新页面 → 点击任意 JS/CSS 文件 → 查看 Response Headers 中是否有
content-encoding: br - Brotli 与 Gzip 可共存,无需关闭 gzip;但若同时启用,建议将
gzip_vary off,避免 Vary 头冲突 - 单核低配服务器慎用高 comp_level(如 8+),可能明显增加 CPU 负载
- 若使用微服务网关场景,Brotli 应统一在边缘 Nginx 层启用,后端服务无需重复处理











