Nginx启用Brotli需手动编译ngx_brotli模块:一安装依赖并编译libbrotli;二下载同版本Nginx源码及ngx_brotli,初始化子模块;三configure时添加--add-module=../ngx_brotli并复用原参数编译安装;四在http块配置brotli on、comp_level及types,重载后验证Content-Encoding: br。

在 Nginx 中启用 Google Brotli 压缩,需要手动下载并编译安装 ngx_brotli 模块,因为该模块**不包含在官方 Nginx 发行版中**,也不支持运行时动态加载(需静态编译进 Nginx)。以下是清晰、可复现的操作步骤(以主流 Linux 系统如 Ubuntu/Debian 或 CentOS/RHEL 为例)。
1. 安装编译依赖和基础工具
确保系统已安装构建所需的基础环境:
-
Ubuntu/Debian:
sudo apt update && sudo apt install -y build-essential zlib1g-dev libpcre3-dev libssl-dev autoconf automake libtool git -
CentOS/RHEL(8+):
sudo dnf groupinstall -y "Development Tools" && sudo dnf install -y pcre-devel zlib-devel openssl-devel git
2. 下载并编译 Brotli 库(libbrotli)
ngx_brotli 依赖 Google 官方的 libbrotli。推荐从源码编译安装到系统标准路径(如 /usr/local),避免版本冲突:
git clone https://github.com/google/brotli.git cd brotli ./configure-cmake cmake -B out -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local cmake --build out sudo cmake --install out sudo ldconfig
完成后验证:brotli --version(若有命令行工具)或检查 /usr/local/lib/libbrotlidec.so 是否存在。
3. 获取 Nginx 源码与 ngx_brotli 模块
务必使用与当前运行 Nginx **相同版本的源码**(否则易出现 ABI 不兼容):
- 查当前 Nginx 版本:
nginx -v(例如nginx version: nginx/1.24.0) - 下载对应源码:
wget https://nginx.org/download/nginx-1.24.0.tar.gz && tar -xzf nginx-1.24.0.tar.gz - 拉取 Brotli 模块:
git clone https://github.com/google/ngx_brotli.git - 进入 Nginx 源码目录,初始化子模块(关键!):
cd nginx-1.24.0 && git clone https://github.com/google/brotli.git deps/brotli
⚠️ 注意:官方 ngx_brotli 推荐直接使用其 deps/brotli 子模块(而非系统 libbrotli),更稳定且版本可控。
4. 配置、编译并替换 Nginx
在 nginx-1.24.0/ 目录下执行:
./configure \ --add-module=../ngx_brotli \ --with-compat \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/run/nginx.pid \ --lock-path=/run/nginx.lock make -j$(nproc) sudo make install
? 关键说明:
-
--add-module=../ngx_brotli:指定模块路径(确保路径正确) - 保留原有配置参数(如
--with-http_ssl_module)——建议用nginx -V查看原编译参数并复用 -
make install会覆盖二进制文件,但**不修改配置文件或站点内容**
5. 启用 Brotli 并验证
编辑 /etc/nginx/nginx.conf 或站点配置,在 http 或 server 块中添加:
brotli on; brotli_comp_level 6; brotli_types text/plain text/css text/javascript application/javascript application/json application/xml+rss text/xml application/x-font-ttf font/opentype image/svg+xml;
重载配置:sudo nginx -t && sudo nginx -s reload
验证是否生效:
- 访问页面,用浏览器开发者工具 → Network → 查看响应头是否有
Content-Encoding: br - 命令行测试:
curl -H "Accept-Encoding: br" -I https://your-site.com/style.css | grep encoding
整个过程不复杂但容易忽略子模块初始化和编译参数一致性。只要版本匹配、路径准确、依赖到位,就能稳定启用 Brotli 压缩,显著提升文本资源传输效率。











