离线内网源码安装nginx的核心是依赖精准复刻:跳板机必须与目标机在操作系统版本、cpu架构(x86_64/aarch64)、glibc版本及-devel头文件库(pcre-devel、zlib-devel、openssl-devel)上完全一致,否则编译必报ssl.h或pcre.h缺失等错误。

离线内网中源码安装 Nginx,核心不是“能不能编译”,而是“依赖能不能一次配齐”。关键在于跳板机准备阶段的精准复刻——操作系统版本、CPU 架构、基础库版本三者必须与目标机完全一致,否则编译中途报错(比如 fatal error: openssl/ssl.h: No such file 或 the http rewrite module requires the pcre library)基本都源于此。
跳板机环境必须严格对齐
在能联网的机器上,先确认目标内网服务器的完整信息:
-
系统发行版及小版本:运行
cat /etc/os-release,重点关注ID、VERSION_ID、PLATFORM_ID(例如麒麟 V10 SP3 对应 openEuler 22.03 LTS;CentOS 7.9 不能混用 CentOS 7.6 的 RPM 包) -
CPU 架构:执行
uname -m,明确是x86_64还是aarch64,下载所有包时必须选对应架构后缀(如.aarch64.rpm) -
glibc 版本:运行
ldd --version,若跳板机 glibc 高于目标机,编译出的二进制可能无法运行
依赖包要分两类准备:构建工具链 + 开发头文件库
只装 pcre-devel-static 或 openssl-libs 是不够的——./configure 需要的是带 .h 头文件和 .so/.a 库文件的 -devel 包。常见必需项如下:
-
构建工具链(缺一不可):
gcc、make、perl、autoconf、automake、libtool -
核心开发库(Nginx 模块硬依赖):
-
pcre-devel(非 pcre-static,rewrite 模块需要pcre.h) -
zlib-devel(gzip_static、http_gzip_module 所需) -
openssl-devel(含ssl.h和libssl.a,http_ssl_module 必备)
-
-
下载方式推荐:
- CentOS/RHEL 系:用
yumdownloader --resolve --destdir=rpms/ gcc make pcre-devel zlib-devel openssl-devel - 麒麟/openEuler 系:改用
dnf download --resolve --destdir=rpms/ ...,并提前导入对应 repo 的 GPG 密钥 - 若 yum/dnf 不可用,直接去 rpmfind.net 或发行版镜像站手动搜包,注意核对
Build Date和Arch
- CentOS/RHEL 系:用
目标机安装顺序不能乱
上传所有 RPM 包到内网服务器后,按以下顺序执行,避免依赖未满足就强行安装:
- 先装构建工具:
rpm -ivh *.rpm(建议加--force --nodeps仅用于解决循环依赖,正常情况不推荐) - 再装开发库:
rpm -ivh pcre-devel-*.rpm zlib-devel-*.rpm openssl-devel-*.rpm - 验证是否到位:
-
gcc --version、make --version能输出 -
ls /usr/include/openssl/ssl.h、ls /usr/include/pcre.h、ls /usr/include/zlib.h全存在 -
pkg-config --modversion openssl、pkg-config --modversion pcre有返回值
-
编译参数建议显式指定依赖路径(防自动探测失败)
即使头文件在标准路径,某些环境下 ./configure 仍会漏检。可加上路径提示:
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-stream \ --with-http_v2_module \ --with-openssl=/usr \ --with-pcre=/usr \ --with-zlib=/usr
若你自行编译过 OpenSSL 或 PCRE 源码(非系统 RPM),则把 /usr 替换为你的实际安装路径(如 /opt/openssl),并在 LD_LIBRARY_PATH 中补充对应 lib 目录。











