登录
首页 >  文章 >  php教程

宝塔Nginx开启Brotli压缩教程

时间:2026-04-21 09:13:00 421浏览 收藏

本文详细讲解了如何在宝塔面板的Nginx中手动编译并启用Brotli压缩——这一比Gzip更高效但默认不支持的关键性能优化技术;文章直击痛点,揭露宝塔界面“开启Brotli”选项的虚假性,手把手指导停服备份、精准获取原编译参数、集成Google官方ngx_brotli模块、规避常见报错(如缺失--with-compat或libbrotli动态库),并强调配置冲突排查与科学调优(如压缩等级设为4–6),最后提供多种即时验证方法,助你真正落地Brotli,显著提升网页加载速度与用户体验。

如何开启宝塔面板Nginx的Brotli压缩_编译安装替换默认Nginx版本

确认当前 Nginx 是否支持 Brotli

宝塔面板默认的 Nginx(尤其是 1.20+ 版本)不带 Brotli 支持,nginx -V 2>&1 | grep brotli 几乎总是返回空。别信面板里“已开启 Brotli”的勾选项——那只是前端开关,后端没模块照样不生效。真正要验证,得看 ngx_http_brotli_filter_module 是否在编译参数里,或者直接请求响应头有没有 content-encoding: br

编译前必须停用宝塔内置 Nginx 并备份

宝塔会监控 /www/server/nginx 目录,擅自替换二进制或 conf 可能触发自动恢复。操作前务必:

  • 在宝塔「软件商店」中点击 Nginx →「停止」,再点「卸载」(仅卸载,不删配置)
  • 备份原二进制:cp /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.bak
  • 备份关键配置:cp -r /www/server/nginx/conf /www/server/nginx/conf.bak
  • 确认 /www/server/nginx 下没有正在运行的 nginx 进程(ps aux | grep nginx

下载含 Brotli 的 Nginx 源码并编译

官方 Nginx 不支持 Brotli,必须用第三方模块。推荐使用 Google 官方维护的 ngx_brotlihttps://github.com/google/ngx_brotli),但注意它只兼容 Nginx 1.19–1.25,且需同步编译 libbrotli

以宝塔常用 Nginx 1.22.1 为例(请先查 nginx -v 确认版本):

cd /www/server/nginx/src
wget https://nginx.org/download/nginx-1.22.1.tar.gz
tar zxvf nginx-1.22.1.tar.gz
cd nginx-1.22.1
<h1>克隆模块(注意 submodule)</h1><p>git clone <a target='_blank'  href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXuytMyero5ko5XFfIfNhNCyr5q5aZ7EZGmix4CNppKmnWy9lbCxlmWJ2MWHZtKZu7Wjgd99mqtkgqCzfZ-nfoCObbOqt7GBhpvOva56mYenz22Sun1ju6x9rr-Njpp-poZt' rel='nofollow'>https://github.com/google/ngx_brotli.git</a>
cd ngx_brotli && git submodule update --init && cd ..</p><h1>编译前获取原宝塔 Nginx 的 configure 参数(关键!)</h1><p>/www/server/nginx/sbin/nginx -V 2>&1 | grep -o 'configure arguments:.*' | sed 's/configure arguments: //'</p><h1>在上面输出的参数末尾追加:</h1><h1>--add-module=/www/server/nginx/src/ngx_brotli --with-compat</h1><h1>执行 configure(把上一步得到的完整参数粘贴过来,末尾加上新增项)</h1><p>./configure --user=www --group=www --prefix=/www/server/nginx ... --add-module=/www/server/nginx/src/ngx_brotli --with-compat</p><p>make && make install</p>

⚠️ 常见坑:

  • --with-compat 必须加,否则模块加载失败(unknown directive "brotli"
  • 不要用 make upgrade,它会跳过模块检查;必须用 make install
  • 如果报 libbrotlienc.so.1: cannot open shared object file,说明系统没装运行时库,执行 ln -s /usr/lib64/libbrotlienc.so.1 /usr/lib64/libbrotlienc.so(路径按实际调整)

启用 Brotli 并验证生效

编辑主配置:/www/server/nginx/conf/nginx.conf,在 http{} 块内添加:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/xml application/xml+rss application/json image/svg+xml;

然后重载:/www/server/nginx/sbin/nginx -t && /www/server/nginx/sbin/nginx -s reload

验证方式(任选其一):

  • curl -I -H 'Accept-Encoding: br' https://yourdomain.com/js/app.js | grep encoding
  • 浏览器 DevTools → Network → 刷新 → 查看响应头是否含 content-encoding: br
  • 访问 https://tools.keycdn.com/brotli-test 输入域名检测

Brotli 对文本类资源压缩率明显优于 Gzip,但 CPU 开销略高;生产环境建议 brotli_comp_level 控制在 4–6,别盲目设 11。

最易被忽略的是:宝塔「网站」→「设置」→「配置文件」里若手动加了 gzip off 或冲突指令,会覆盖全局配置;Brotli 生效的前提是该站点未禁用压缩且 MIME 类型匹配。

理论要掌握,实操不能落!以上关于《宝塔Nginx开启Brotli压缩教程》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>