关键是要将ngx_brotli模块静态编译进nginx二进制,需三步:先装autoconf/automake/libtool等构建工具及openssl-devel等开发库;再编译安装libbrotli并执行sudo ldconfig;最后下载nginx与ngx_brotli源码,configure时加--add-module=路径,make install后通过nginx -v和curl验证。

要在源码安装 Nginx 时集成 Brotli 压缩,关键不是“加个配置就行”,而是把 ngx_brotli 模块真正编译进 Nginx 二进制文件里。它依赖底层 libbrotli 库,必须先装库、再编译模块、最后重编 Nginx,三步缺一不可。
装好基础依赖和构建工具
不同系统命令略有差异,但核心是确保能编译 C 项目:
- CentOS/RHEL:运行
yum groupinstall "Development Tools",再装openssl-devel pcre-devel zlib-devel git autoconf automake libtool - Ubuntu/Debian:执行
apt-get install build-essential libssl-dev libpcre3-dev zlib1g-dev git autoconf automake libtool
这些工具用于后续拉取、配置、构建 Brotli 和 Nginx 本身。
编译并安装 libbrotli 核心库
Google 的 Brotli 分为两部分:压缩/解压库(libbrotli)和 Nginx 接口模块(ngx_brotli)。前者必须先装到系统路径,否则 Nginx 编译会报错找不到头文件或链接库。
- 克隆源码:
git clone https://github.com/google/brotli.git && cd brotli - 推荐用 autotools 方式构建(兼容性更稳):
./bootstrap && ./configure --prefix=/usr/local && make && sudo make install - 刷新动态库缓存:
sudo ldconfig,让系统能立刻找到libbrotlidec.so和libbrotlienc.so
下载 ngx_brotli 模块并重新 configure Nginx
模块本身不自带编译好的二进制,必须和 Nginx 源码一起参与编译:
- 获取模块:
git clone https://github.com/google/ngx_brotli.git,进入目录后执行git submodule update --init(拉取其内部依赖) - 下载对应版本的 Nginx 源码(比如
nginx-1.24.0.tar.gz),解压后进入目录 - 执行
./configure,在原有参数基础上追加:--add-module=/path/to/ngx_brotli(静态集成,推荐)
或--with-compat --add-dynamic-module=/path/to/ngx_brotli(动态模块,需后续手动加载) - 接着
make && sudo make install,默认装到/usr/local/nginx
启用 Brotli 并验证是否生效
编译成功只是第一步,配置和验证同样重要:
- 编辑
nginx.conf,在http块中加入:
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
- 注意:
brotli on必须显式开启;brotli_static off(默认关闭,避免干扰动态压缩) - 运行
nginx -t检查语法,nginx -V确认输出里含--add-module=...ngx_brotli - 用
curl -H "Accept-Encoding: br" -I http://your-site.com/test.js查看响应头是否含Content-Encoding: br











