必须先确认 nginx 已加载 ngx_brotli 模块(通过 nginx -v | grep ngx_brotli),否则所有 brotli on 配置无效;brotli 仅对 https 生效,需在 http 块顶层配 brotli on; 和 gzip off; 避免冲突;压缩级别应分层设置(js/css 用 6–8,html/json 用 1–4),brotli_min_length 建议设为 1024,brotli_static on 仅查 .br 文件;最终须用 curl 或浏览器开发者工具验证 content-encoding: br 是否真实返回。

确认 Nginx 是否已编译 Brotli 模块
没装 ngx_brotli,所有 brotli on 配置都无效。先验证:
- 运行
nginx -V 2>&1 | grep -o ngx_brotli,有输出才说明模块已加载 - 若无输出:Ubuntu/Debian 可直接装
nginx-extras(含 Brotli);CentOS/RHEL 需手动编译google/ngx_brotli+libbrotli-dev或brotli-devel - 注意:Brotli 在 HTTP 协议下不生效,只对 HTTPS 请求响应
br编码
http 块中启用 Brotli 并避免与 Gzip 冲突
brotli on 必须写在 http{} 顶层,且必须显式关闭 Gzip 干扰逻辑,否则浏览器可能随机选一种编码,无法稳定返回 br:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
brotli on;和gzip off;必须成对出现,放在http{}开头最稳妥 - 不要用
gzip_disable或gzip_vary off等干扰协商的指令 - 若需保留 Gzip 作兜底(推荐),则不能关
gzip,而应确保brotli模块优先级更高——这由 ngx_brotli 默认行为保证,无需额外设置
按资源类型和场景设压缩级别与阈值
统一设 brotli_comp_level 11 是典型误操作,CPU 负载会陡增,实际应分层控制:
- 静态 JS/CSS 文件:用
brotli_comp_level 6–8(预构建时可打到 11,运行时不必) - 动态 HTML/JSON 响应:严格限制为
1–4,否则接口延迟明显升高 -
brotli_min_length建议设为1024(1KB),避免对小响应频繁触发压缩消耗 CPU -
brotli_static on只查同名.br文件,不生成也不降级;如需动态压缩 API,必须设brotli_static off并在对应location块里再写一遍brotli on
验证 Content-Encoding 是否按预期生效
别只看配置写了没,要实测响应头:
- 用
curl -H "Accept-Encoding: br,gzip" -I https://yoursite.com/main.js,检查返回头是否含Content-Encoding: br - 若返回
gzip,先确认请求走的是 HTTPS;再检查brotli_types是否包含application/javascript - 若返回未压缩内容,检查文件大小是否低于
brotli_min_length,或响应 MIME 类型是否漏配 - 浏览器开发者工具 Network 标签页中,点开资源 → Headers → Response Headers,直接看
Content-Encoding字段
brotli_static 与动态压缩混用,任一环节出错都会让配置形同虚设。最常被忽略的是:没确认 Nginx 实际加载了模块,就急着调参数。










