需先确认 Nginx 已集成 ngx_brotli 模块,再在 http 块中配置 brotli on、comp_level 6、min_length 512 及常用 MIME 类型,并支持与 gzip 共存协商;仅 HTTPS/HTTP/2 下生效,验证需检查响应头 Content-Encoding: br。

要在 Nginx 中通过 http 块开启 Brotli 压缩以获得比 Gzip 更优的压缩比,核心前提是 Nginx 已集成 ngx_brotli 模块,然后在全局 http 配置中启用并合理调参。Brotli 对 HTML、CSS、JS、SVG、JSON 等文本类资源压缩率通常高出 17–25%,尤其在中高 comp_level 下优势明显。
确认 ngx_brotli 模块已加载
这是所有配置生效的前提。执行以下命令检查:
-
nginx -V 2>&1 | grep -o ngx_brotli—— 若有输出说明模块已编译进 Nginx;无输出则需先安装(如用宝塔编译添加模块、或换用含 Brotli 的预编译版) - Brotli 在 HTTP/2 和 HTTPS 环境下才被主流浏览器主动声明支持(
Accept-Encoding: br),HTTP 明文连接通常不会触发
在 http 块中添加标准 Brotli 配置
编辑 /etc/nginx/nginx.conf 或宝塔中的主配置文件,在 http { ... } 区块内(位置不限于 gzip 上下)插入以下内容:
-
brotli on;—— 全局启用,仅对带br的请求响应 -
brotli_comp_level 6;—— 推荐值:4–7 之间平衡速度与压缩率;1–3 太弱,9–11 过耗 CPU -
brotli_min_length 512;—— 小于该字节的响应不压缩,避免小文件反增开销 -
brotli_types text/plain text/css text/javascript application/javascript application/json application/xml text/html image/svg+xml font/opentype;—— 务必覆盖常用静态资源类型,特别是application/javascript和image/svg+xml容易遗漏 -
brotli_static on;(可选)—— 启用后会优先查找同名.br文件(如app.js.br),需配合构建工具提前生成
处理与 gzip 的共存关系
Brotli 和 gzip 可同时启用,Nginx 会按客户端 Accept-Encoding 自动协商,优先使用 br。为避免冗余判断或旧配置干扰:
- 无需关闭 gzip,但建议移除可能干扰协商的指令,例如
gzip_disable "msie6"; - 若追求极致精简,可设
gzip off;(尤其在确认全站用户均支持 Brotli 后) - 注意:Brotli 不替代 gzip,而是作为更高效的补充;老旧浏览器(如 IE)仍依赖 gzip 回退
验证是否生效
重载 Nginx(nginx -s reload 或宝塔点【重载配置】)后,用真实浏览器访问静态资源并检查响应头:
- F12 → Network → 刷新 → 点击任意 JS/CSS/HTML 文件 → 查看 Response Headers 中
Content-Encoding: br - 或终端执行:
curl -I -H "Accept-Encoding: br,gzip" https://yoursite.com/app.css,确认返回含content-encoding: br - 若返回
gzip或为空,重点排查:模块未加载、配置不在 http 块、类型未包含该资源 MIME、或请求非 HTTPS










