宝塔面板里面重新编译Nginx软件加上google的LZ77 算法Brotli无损压缩实现比Gzip压缩性能更快网页加速性能更好的网站加速模块
宝塔面板里面重新编译Nginx软件加上google的LZ77 算法Brotli无损压缩实现比Gzip压缩性能更快网页加速性能更好的网站加速模块:
以宝塔面板为例,无论你现在是已经安装了nginx还是没安装都可以无损操作:
用宝塔面板内置的 Nginx 编译系统(即“添加自定义模块”功能),自动接管升级与编译。下面我一步步教你 “在宝塔面板里添加 Brotli 模块” 的最标准写法,确保 100% 可通过。
一、操作说明
宝塔“添加自定义模块”功能,本质上就是:
面板在重新编译 Nginx 时,会把你填写的 --add-module=/xxx 参数附加到 Nginx 的 configure 阶段。
“前置脚本”则是在 configure 前执行的 shell 命令(通常用来下载或准备模块源码)。
因此我们要做的就是:
- 在编译前下载好 ngx_brotli 源码;
- 并告诉宝塔在 configure 阶段加上对应的 --add-module 参数。
首先登录SSH里面执行以下命令:
# 更新库并安装依赖:
apt -y update
apt -y install -y build-essential git zlib1g-dev libpcre3-dev
二、准备模块源码路径
宝塔面板在编译时使用的源码目录一般是:/www/server/nginx/src/
所以我们把 brotli 模块放在这里最合适。
SSH里面执行以下命令(仅一次):
mkdir -p /www/server/nginx/src
cd /www/server/nginx/src
git clone --recursive https://github.com/google/ngx_brotli
cd ngx_brotli && git submodule update --init --recursive
执行完后,目录结构大概是:
/www/server/nginx/src/ngx_brotli/
├── filter/
├── static/
├── deps/brotli/
└── config
这就准备好了。
三、宝塔面板中填写内容
打开宝塔 → 软件商店 → Nginx → 设置 →选择【编译安装】 → 【添加自定义模块】。
按照以下填写:
| 项目 |
填写内容 |
| 模块名称 |
ngx_brotli |
| 模块描述 |
Brotli 压缩模块(Google 原版) |
| 模块参数 |
--add-module=/www/server/nginx/src/ngx_brotli |
| 前置脚本 |
(见下方完整内容) |
前置脚本(完整可直接复制)
# 下载 Google Brotli 模块源码及依赖
cd /www/server/nginx/src
if [ ! -d "ngx_brotli" ]; then
git clone --recursive https://github.com/google/ngx_brotli
cd ngx_brotli && git submodule update --init --recursive
else
cd ngx_brotli && git pull && git submodule update --init --recursive
fi
这个脚本会在每次“重新编译 Nginx”时自动执行,如果已经存在则只更新。
四、确认安装步骤
- 点击【确定】添加模块;
- 回到 Nginx 管理页 → 点击【编译安装】;
- 勾选并启用“自定义模块”中的 ngx_brotli;
- 开始编译。
等待几分钟,完成后即可自动启用。
五、配置参数建议
在 http {} 启用并调参(并存 gzip 做回退)
查找:
fastcgi_intercept_errors on;
在其*下行* 添加如下配置参数段:(DZ插件网已经深度调优版)
# 仅当真的发送了压缩时才加 Vary,避免无谓的缓存分裂
map $sent_http_content_encoding $add_vary {
default "";
br "Accept-Encoding";
gzip "Accept-Encoding";
}
# 2025.11.02 ---- Brotli 基线 ----
brotli on; # 全局启用;客户端不支持 br 时会自动回退为未压缩
brotli_comp_level 5; # 4~6 性价比最佳,先用 5 观察 CPU
brotli_min_length 1024; # 小于 1KB 不压缩
brotli_static on; # 有 *.br 直接发;没有再在线压缩
brotli_types
text/plain text/css text/xml text/javascript
text/html
application/javascript application/x-javascript
application/json application/xml application/rss+xml
application/ld+json
image/svg+xml
font/ttf font/otf application/x-font-ttf;
# End 11.02
# 统一按是否实际压缩来发 Vary 头(CDN/代理缓存正确分桶)
add_header Vary $add_vary always;
# 方便 Brotli 排查:回显最终编码(上线可删)
add_header X-Content-Encoding $sent_http_content_encoding always;
如图所示:
六、验证是否生效
执行:
/www/server/nginx/sbin/nginx -V 2>&1 | grep brotli
若输出中出现 --add-module=/www/server/nginx/src/ngx_brotli,表示模块已编译成功。
再执行:
curl -I -H 'Accept-Encoding: br' https://你的域名/某个静态文件.js
如图DZ插件网实测:
curl -sI -H 'Accept-Encoding: br' https://www.18cm.me | egrep -i 'HTTP/|content-encoding|content-length|vary'
出现:
Content-Encoding: br
表示 Brotli 压缩工作正常。
这时候你网站的访问速度应该相比之前默认的gzip压缩访问速度整体提升40%左右~