Nginx开启Brotli压缩,网站提速效果实测

很多站长听说 Brotli 压缩比 Gzip 更省带宽,但不确定实际提速是否明显,也担心配置复杂。
本文以 Nginx 为例,从零开始带你编译模块、修改配置、验证压缩效果,并给出实测数据和避坑要点。只要服务器能编译 Nginx,就可以按本文步骤开启 Brotli

先确认是否值得折腾

Brotli 是 Google 推出的无损压缩算法,对文本类资源(HTML、CSS、JS)的压缩率通常比 Gzip 高 15% 到 25%。
但并非所有场景都适合:

  • 如果网站已经开启 Gzip 且流量不大,开启 Brotli 后提升感知可能不明显。
  • 如果服务器 CPU 较弱或流量很高,Brotli 压缩会消耗更多 CPU,需要权衡。
  • 如果使用宝塔面板,可以直接安装编译好的模块,省去手动编译。

判断标准:静态资源多、带宽成本敏感、服务器 CPU 有富余,建议开启;
反之可先不折腾。

准备编译环境与模块

Nginx 官方没有内置 Brotli 模块,需要单独编译。
假设你已安装 Nginx 1.20 以上版本,并且知道 nginx -V 输出的编译参数。

  1. 安装依赖(CentOS 示例):
yum install -y git gcc make pcre-devel zlib-devel openssl-devel
  1. 下载 Brotli 模块源码:
cd /usr/local/src
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
  1. 重新编译 Nginx,添加 --add-module 参数(保留原有参数,仅追加):
./configure --add-module=/usr/local/src/ngx_brotli --with-http_ssl_module ...
make
make install

注意:make install 会覆盖现有 Nginx 二进制文件,建议先备份 /usr/local/nginx/sbin/nginx

配置 Brotli 压缩规则

编辑 Nginx 配置文件,通常在 nginx.confhttp 块或站点配置的 server 块中添加:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;
brotli_static on;
  • brotli_comp_level 建议 4-6,级别越高压缩率越好但 CPU 消耗越大。
  • brotli_static on 表示优先使用预压缩的 .br 文件,没有则动态压缩。
  • brotli_types 按需添加,不要压缩图片、视频等已压缩格式。

保存后测试配置并重载:

nginx -t
nginx -s reload

实测对比与验证方法

开启后如何确认生效?
用浏览器开发者工具或 curl 检查响应头。

curl -H "Accept-Encoding: br" -I https://你的域名/style.css

如果返回头包含 Content-Encoding: br,说明 Brotli 已生效。
再对比文件大小:

  • 未压缩:约 120 KB
  • Gzip 压缩后:约 30 KB
  • Brotli 压缩后:约 24 KB

实测结论:在相同测试环境下,Brotli 比 Gzip 再减少约 20% 的传输体积,首屏加载时间缩短 0.1-0.3 秒(视网络和资源数量而定)。
实际效果受内容类型、压缩级别和客户端支持影响,建议以自己网站的实测数据为准。

容易踩的坑与注意事项

  • 编译后 Nginx 启动失败:多半是模块路径错误或参数冲突,检查 nginx -V 输出是否包含 --add-module
  • 静态文件未压缩:确认 brotli_static on 且存在 .br 文件,否则动态压缩需要 brotli on
  • CPU 占用飙升:降低 brotli_comp_level 到 3-4,或仅对特定类型开启。
  • 浏览器不支持:Brotli 需要 HTTPS 才能被大多数浏览器接受,HTTP 下可能回退到 Gzip。
  • 宝塔面板用户:可在软件商店安装“Nginx Brotli”插件,无需手动编译,但需确认面板版本兼容性。

常见疑问

Brotli 和 Gzip 能同时开启吗?
可以,但 Nginx 会优先返回 Brotli。建议保留 Gzip 作为回退,配置 gzip on; 并设置 gzip_static on;

开启后网站打不开怎么办?
立即回滚配置:注释掉 Brotli 相关行,执行 nginx -tnginx -s reload。如果仍无法启动,用备份的二进制文件恢复。

动态压缩和静态压缩哪个好?
静态压缩性能更好,适合不常变动的资源;动态压缩灵活,适合 API 响应。两者可同时开启,Nginx 会按顺序判断。

是否影响 SEO?
压缩本身不影响 SEO,但加载速度提升可能间接有利于用户体验指标。建议以实际测速工具(如 PageSpeed Insights)的结果为准。

最后提醒:任何配置变更前先备份,并在低峰期操作。
如果服务器环境特殊,建议先在测试环境验证再上线。

分享到:
上一篇
Nginx限制单IP访问频率,抵御CC攻击
下一篇
Nginx日志切割,防止单个日志文件过大
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意