内网离线编译安装nginx需在有网机器下载源码包(nginx、openssl、pcre、zlib)、验证完整性,并确认目标机已装gcc等工具链;上传解压后,进入nginx目录执行configure,指定--prefix为用户可写路径及--with-openssl指向同级openssl源码目录。

在内网离线环境中源码编译安装 Nginx,核心是把“编译环境 + 源码 + 依赖库”整套打包带进去,不依赖任何在线仓库。整个过程不需要 root 权限也能完成(普通用户可装到自己家目录),关键在于提前准备充分、参数配置准确、路径引用清晰。
一、提前在有网机器上准备好所有材料
离线安装成败,80%取决于这一步是否严谨。需下载并验证以下内容:
-
Nginx 源码包:推荐 1.26.x 系列(如
nginx-1.26.3.tar.gz),官网地址:https://www.php.cn/link/ce4d95afd39b4272f11e7d10b88a5a53 -
OpenSSL 源码:必须匹配(如
openssl-3.0.20.tar.gz),用于启用 HTTPS 和 HTTP/2;地址:https://www.php.cn/link/9c618efc52059f78790c30eee41cbb58 -
PCRE 和 zlib 源码(可选):多数内网系统已自带运行时库,但若 configure 报错提示
not found pcre.h或zlib.h,则需补充pcre-8.45.tar.gz和zlib-1.3.1.tar.gz -
编译工具链:gcc、make、perl 等——这些不能靠源码安装,必须提前确认目标机已安装。若无,需从同版本 OS 的 ISO 或 yum repo 中提取 rpm 包(如
gcc-4.8.5-44.el7.x86_64.rpm)并用rpm -ivh --nodeps离线安装
二、上传并解压,注意目录结构要连贯
将所有 tar.gz 文件传到目标服务器(如 /home/user/src),然后统一解压,保持相对路径一致:
tar -xzf nginx-1.26.3.tar.gz<br>tar -xzf openssl-3.0.20.tar.gz<br>tar -xzf pcre-8.45.tar.gz<br>tar -xzf zlib-1.3.1.tar.gz
解压后建议目录结构如下(便于 configure 引用):
/home/user/src/<br>├── nginx-1.26.3/<br>├── openssl-3.0.20/<br>├── pcre-8.45/<br>└── zlib-1.3.1/
三、进入 Nginx 目录,执行 configure(重点!)
cd 进入 nginx-1.26.3,运行 configure 脚本。普通用户请指定自己的安装前缀,并显式指向 OpenSSL 源码(这是离线启用 SSL 的刚性要求):
./configure \<br>--prefix=/home/user/nginx \<br>--with-openssl=../openssl-3.0.20 \<br>--with-http_ssl_module \<br>--with-http_v2_module \<br>--with-http_stub_status_module \<br>--with-stream \<br>--without-http_rewrite_module
说明:
-
--prefix必须是普通用户有写权限的路径(如家目录下),避免后续 make install 报 Permission denied -
--with-openssl=../openssl-3.0.20是绝对关键项,不能写成绝对路径或错误版本号,否则 configure 成功但编译时会找不到头文件 - /usr/include/pcre.h 等),可不加
--with-pcre或--with-zlib;否则加上--with-pcre=../pcre-8.45 --with-zlib=../zlib-1.3.1 - --without-http_rewrite_module 可选:若不装 pcre,就禁用 rewrite,避免 configure 报错
四、编译安装与快速验证
依次执行:
make<br>make install
安装完成后检查:
-
/home/user/nginx/sbin/nginx -v应输出版本号 -
/home/user/nginx/sbin/nginx -t验证配置语法(默认 conf 文件在/home/user/nginx/conf/nginx.conf) - 启动:
/home/user/nginx/sbin/nginx(无报错即成功) - 查进程:
ps aux | grep nginx,应看到 master + worker 进程 - 本地访问:
curl -I http://127.0.0.1,返回200 OK即通
如需监听非 80 端口(普通用户不能 bind 1–1023),编辑 conf/nginx.conf,把 listen 80; 改为 listen 8080;,再执行 ./sbin/nginx -s reload。











