编译Nginx集成Brotli模块报“缺少依赖”,本质是构建链断裂:configure阶段缺开发包(如pcre-devel、openssl-devel、zlib-devel、libbrotli头文件)或GCC工具链;需据错误关键词定位缺失项,分发行版安装对应-dev/devel包及手动编译安装libbrotli,并用--with-brotli=/usr/local等参数显式指定路径。

编译 Nginx 并集成 Brotli 模块时提示“缺少依赖”,本质不是模块本身有问题,而是底层构建链断在了某个环节。关键要分清:是编译阶段缺开发头文件和工具,还是运行时缺动态库;是系统没装,还是装了但路径不对。
先看 configure 报错关键词,快速定位缺什么
执行 ./configure ... 后若失败,错误信息通常直指缺失项:
-
“the HTTP rewrite module requires the PCRE library” → 缺 PCRE 开发包(
libpcre3-dev或pcre-devel) -
“OpenSSL library not found” → 缺 OpenSSL 开发包(
libssl-dev或openssl-devel) -
“zlib.h: No such file or directory” → 缺 zlib 开发包(
zlib1g-dev或zlib-devel) - “brotli/encode.h: No such file or directory” → libbrotli 库未安装或头文件不在默认路径
- “cc: command not found” → GCC 和基础编译工具完全缺失
补全基础构建环境和开发依赖
不同发行版安装命令不同,但目标一致:装齐编译器、make、头文件、静态/动态链接所需库。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
Ubuntu/Debian:
sudo apt update && sudo apt install -y build-essential libssl-dev libpcre3-dev zlib1g-dev git autoconf automake libtool -
RHEL/CentOS/Alma/Rocky:
sudo dnf groupinstall "Development Tools" && sudo dnf install -y openssl-devel pcre2-devel zlib-devel git autoconf automake libtool - 注意:
pcre2-devel是 RHEL 9+ 默认,别再装旧版pcre-devel
单独处理 Brotli 的核心依赖 libbrotli
ngx_brotli 模块必须链接 Google 的 libbrotli,它不包含在系统默认源中,需手动编译安装:
- 克隆并安装:
git clone https://github.com/google/brotli.git && cd brotli && ./configure-cmake && cmake --build . --target install - 安装后执行:
sudo ldconfig刷新动态库缓存 - 验证是否就位:
ls /usr/local/include/brotli/encode.h和ls /usr/local/lib/libbrotlienc.so应存在 - 若 configure 仍找不到,加参数显式指定:
--with-brotli=/usr/local
确认模块路径与 configure 参数匹配
下载 ngx_brotli 后,确保路径稳定,且 configure 中引用正确:
- 模块应放在 Nginx 源码同级目录,如:
../ngx_brotli - configure 必须含:
--add-dynamic-module=../ngx_brotli --with-compat - 若用自定义 OpenSSL/PCRE 路径(如
/opt/openssl),还需加:--with-openssl=/opt/openssl等对应参数 - 最后检查:
nginx -V 2>&1 | grep -i brotli应输出含http_brotli_filter_module或ngx_brotli

















