Nginx启用Brotli需先编译集成ngx_brotli模块,再配置brotli on、brotli_static off及精准types,最后调优comp_level(推荐5–6);其对HTML/CSS/JS压缩率比Gzip高17–25%,且仅HTTPS下自动协商br编码。
直接开启 Brotli 压缩不能只改配置文件,Nginx 必须先支持 ngx_brotli 模块,否则配置无效。它不是开关式功能,而是需要编译集成的底层能力。启用后,对 HTML、CSS、JS 等文本资源压缩率比 Gzip 高 17–25%,且现代浏览器(Chrome/Firefox/Edge)在 HTTPS 下会自动协商使用 br 编码。
执行命令验证模块是否存在:
nginx -V 2>&1 | grep -o ngx_brotli —— 有输出说明已加载;无输出则需编译安装nginx -V 输出中的 configure arguments 是后续重编译的关键依据,务必保留Accept-Encoding: br),HTTP 站点不会触发宝塔或 phpEnv 等环境均需手动集成,不可跳过此步:
cd /www/server && git clone https://github.com/google/ngx_brotli.git && cd ngx_brotli && git submodule update --init
/www/server/ngx_brotli
--add-module=/www/server/ngx_brotli,再执行 make && make install
/www/server/nginx/sbin/nginx -V 确认含 ngx_brotli
编辑 /www/server/nginx/conf/nginx.conf,在 http { ... } 块内添加(建议放在 gzip 配置之后):
brotli on; —— 必须显式开启,否则不生效brotli_comp_level 5; —— 生产环境推荐 5–6 级,兼顾压缩率与 CPU 开销;避免设为 11brotli_min_length 20; —— 小于 20 字节的响应不压缩,防止得不偿失brotli_types text/plain text/css application/javascript application/json text/html image/svg+xml; —— 精准覆盖文本类资源,不压缩图片、字体等已压缩格式brotli_static off; —— 关闭静态 .br 文件查找(除非你已预生成并维护这些文件)配置保存后点击【重载配置】,再通过真实请求确认:
content-encoding 是否为 br
curl -I -H "Accept-Encoding: br" https://yoursite.com/style.css,响应头应含 content-encoding: br
gzip 或为空,检查:是否 HTTPS、是否重载 Nginx、配置是否在 http 块内、客户端是否支持Brotli 和 Gzip 可同时启用,无需关闭后者。浏览器会按 Accept-Encoding 优先级自动选择,老旧设备自然回退到 Gzip,安全又高效。