Nginx 1.21.0+ 默认依赖 PCRE2,需安装对应开发包(如 pcre2-devel 或 libpcre2-dev),而非旧版 pcre-devel;头文件为 pcre2.h,库为 libpcre2-8.so;手动编译时需指定 --prefix 并在 configure 中用 --with-pcre 指向正确路径。

编译 Nginx 源码时提示 “PCRE library not found” 或 “pcre2.h not found”、“libpcre2-8.so.0 not found”,说明系统缺少 PCRE2 运行库或开发头文件——这是 Nginx 1.21.0 及之后版本(包括主流的 1.22.x、1.24.x、1.26.x)默认依赖的正则引擎,用于 rewrite、location ~、if 等核心功能。
确认你用的是 PCRE2 而非 PCRE
Nginx 自 1.21.0 起已切换为默认使用 PCRE2(v10.30+),不再兼容旧版 PCRE v8.x。若你安装的是 pcre-devel(对应 PCRE v8)或 libpcre3-dev,configure 仍会失败,因为头文件名从 pcre.h 变为 pcre2.h,库名也变为 libpcre2-8.so。
- 检查是否已装 PCRE2 开发包:
pkg-config --exists libpcre2-8 && echo "PCRE2 dev OK" || echo "Missing" - 查看头文件是否存在:
ls /usr/include/pcre2.h &>/dev/null && echo "found" || echo "not found" - 检查运行库:
ls /usr/lib64/libpcre2-8.so* /usr/lib/x86_64-linux-gnu/libpcre2-8.so* 2>/dev/null | head -1
按系统安装正确的 PCRE2 开发包
必须安装带 -dev 或 -devel 后缀的开发包,仅装运行库(如 pcre2-libs 或 libpcre2-8)无法通过 configure 检测。
-
CentOS/RHEL/Rocky/AlmaLinux 8+:
sudo dnf install -y pcre2-devel
(注意:不是pcre-devel;RHEL 7 默认无 pcre2-devel,需启用 EPEL 或手动编译) -
Ubuntu 20.04+/Debian 11+:
sudo apt update && sudo apt install -y libpcre2-dev
(不是libpcre3-dev) -
openEuler 22.03 LTS SP3:
sudo dnf install -y pcre2-devel
(该版本默认提供 PCRE2,但需确认仓库启用) -
离线环境:在同版本、同架构的联网机器上下载 RPM/DEB 包及全部依赖(如
pcre2-utf16、pcre2-utf32),再拷贝安装。
手动编译安装 PCRE2(适用于无包源或需指定版本)
当系统仓库中没有合适版本(如需要 v10.42+),或处于严格离线环境时,可源码构建:
- 从 pcre.org 下载最新源码(如
pcre2-10.42.tar.gz) - 解压后进入目录,执行:
./configure --prefix=/usr/local/pcre2 --enable-unicode --enable-pcre2-16 --enable-pcre2-32
(--enable-unicode是 Nginx 推荐选项) make && sudo make install- Nginx configure 时显式指定路径:
./configure --with-pcre=/usr/local/pcre2
(注意:此处--with-pcre实际指向 PCRE2 源码或安装前的解压目录均可;若指向/usr/local/pcre2,需确保其下有include/和lib/子目录)
常见错误与绕过技巧
有些报错看似是 PCRE2 问题,实为干扰项:
-
command not found: pcre2-config→ 表明PATH未包含/usr/local/pcre2/bin,可临时添加:export PATH="/usr/local/pcre2/bin:$PATH" - configure 成功但
make报pcre2.h: No such file or directory→ 检查objs/autoconf.err,确认 configure 是否真识别到了 PCRE2;若未识别,说明路径或包未生效,先make clean再重试 - 不想升级 PCRE2?可退回到旧版 Nginx(如 1.20.2),并安装
pcre-devel+libpcre3-dev,但不推荐——已失去安全更新和新特性支持


















