brotli 在 nginx 中生效需精准配置 brotli_types:必含 text/html、text/css、application/javascript、application/json、image/svg+xml;可选 rss/xml 类型需按需启用;必须排除 image/、font/、pdf/音视频等已压缩二进制类型;配置须置于 http{} 块顶层,禁用通配符。

要在 Nginx 中让 Brotli 真正生效,brotli_types 配置必须精准——它不是“越多越好”,而是只覆盖那些纯文本、未压缩、且能从 Brotli 上下文建模中显著受益的资源类型。
必须包含的核心类型
以下 MIME 类型是静态资源中压缩收益最高、且极易被遗漏的关键项:
- text/html:SSR 页面、PHP 渲染页、或构建生成的 index.html;漏掉会导致首页完全绕过 Brotli
- text/css 和 application/javascript:CSS 和 JS 是前端体积主力,Brotli 相比 Gzip 平均多压 20%+
- application/json:配置文件、i18n 数据、API 静态响应,小体积但高频,-q 4 即高效
- image/svg+xml:SVG 是 XML 文本,未压缩时动辄数 KB,Brotli 可再压 30%+,常被忽略
可选但需按需启用的类型
仅在你实际提供对应内容时才加入,避免泛化配置:
- application/xml+rss 或 application/atom+xml:仅当站点输出 RSS/Atom 订阅源
- text/xml:仅用于传统 XML 接口或旧系统对接
务必排除的类型
这些格式本身已是高压缩二进制,Brotli 不仅无效,还可能触发 500 错误或缓存混乱:
- image/*(如 image/png、image/jpeg、image/webp)
- font/*(如 font/woff2、font/ttf)——WOFF2 内置压缩,再压无意义
- application/pdf、audio/mpeg、video/mp4
- application/octet-stream:泛用二进制类型,极易误命中
配置写法与位置要求
所有配置必须放在 http{} 块顶层(不能写在 location 内),示例:
注意:不要写通配符(如 * 或 ~.*),也不要混入 application/x-httpd-php(这是动态响应类型,不走静态压缩路径)。











