找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 34|回复: 0

宝塔里重新编译Nginx加上google的LZ77算法Brotli无损压缩实现比Gzip压缩性能更快更好

[复制链接]

34

主题

8

回帖

218

积分

管理员

积分
218
发表于 2025-11-12 10:19:03 | 显示全部楼层 |阅读模式

宝塔面板里面重新编译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%左右~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-12-6 01:33 , Processed in 0.029473 second(s), 2 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表