在实际生产环境中,服务器往往处于隔离内网,无法直接使用 yumapt 在线安装。本文将详细介绍如何在 完全离线的 Linux 环境下,以 普通用户身份编译安装 Nginx,并支持 SSL、HTTP/2、Stream 四层代理等常用模块;并给出常用的编译参数、安装步骤及验证方法,适用于无法直接联网安装依赖的场景。

一、安装包准备

离线安装前,请先准备以下源码安装包:

  1. nginx1.26.3
    下载地址:https://nginx.org/en/download.html

  2. openssl3.0.20
    下载地址:https://openssl-library.org/source/

  3. pcre8.45
    一般 Linux 系统通常已自带相关运行环境,可不额外下载。
    如需源码包,可从以下地址获取:
    https://sourceforge.net/projects/pcre/files/pcre/

  4. zlib1.3.1
    一般 Linux 系统通常已自带相关运行环境,可不额外下载。
    如需源码包,可从以下地址获取:
    https://www.zlib.net/

二、解压源码包

将下载好的源码包上传到目标服务器后,分别执行解压。例如:

tar -xzf nginx-1.26.3.tar.gz
tar -xzf openssl-3.0.20.tar.gz
tar -xzf pcre-8.45.tar.gz
tar -xzf zlib-1.3.1.tar.gz

如果 pcrezlib 使用系统自带环境,则这两个源码包可以不解压,也不参与后续编译参数配置。

三、配置编译参数

进入 Nginx 源码目录:

cd nginx-1.26.3

执行 configure 脚本,示例如下:

./configure \
  --prefix=/app/user/nginx \
  --with-openssl=../openssl-3.0.20 \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_stub_status_module \
  --with-stream

参数说明:

  • --prefix=/app/user/nginx:指定 Nginx 安装目录。
  • --with-openssl=../openssl-3.0.20:指定 OpenSSL 源码目录。
  • --with-http_ssl_module:启用 HTTPS 支持。
  • --with-http_v2_module:启用 HTTP/2 支持。
  • --with-http_stub_status_module:启用状态监控模块。
  • --with-stream:启用 stream 模块,用于 TCP/UDP 四层代理。

如有需要,也可以显式指定 pcrezlib 的源码目录:

./configure \
  --prefix=/app/user/nginx \
  --with-pcre=../pcre-8.45 \
  --with-zlib=../zlib-1.3.1 \
  --with-openssl=../openssl-3.0.20 \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_stub_status_module \
  --with-stream

说明:

  • 如果系统已经具备可用的 pcrezlib 相关环境,通常可以不显式指定。
  • 如果后续使用了 stream {} 配置块,编译时必须加上 --with-stream,否则启动时可能报错:unknown directive "stream"

四、编译与安装

nginx-1.26.3 目录下执行:

make
make install

执行过程中请关注终端输出,确认是否存在报错。如果任一步骤失败,应先排查依赖或编译参数问题,再重新执行。

五、配置与运行

1. 修改监听端口

如果使用非 root 用户安装并启动 Nginx,通常不能直接监听 80 端口。
此时请修改 conf/nginx.conf 中的 listen 指令,例如改为 8080 或其他高位端口:

listen 8080;

2. 检查配置文件

进入安装目录后执行配置校验:

cd /app/user/nginx/sbin
./nginx -t

如果提示 syntax is oktest is successful,说明配置文件校验通过。

说明:

  • nginx 可执行文件默认位于安装目录下的 sbin 目录中。
  • 如果你当前所在目录不是 sbin,也可以使用完整路径执行,例如:
/app/user/nginx/sbin/nginx -t

3. 启动 Nginx

执行以下命令启动:

/app/user/nginx/sbin/nginx

六、测试与验证

1. 检查进程

使用以下命令查看 Nginx 进程是否已正常启动:

ps aux | grep nginx

2. 访问测试

使用 curl 测试服务是否可访问:

curl http://localhost:8080

如果返回了 Nginx 欢迎页对应的 HTML 内容,则说明 Nginx 已安装成功并能够正常提供服务。

七、补充说明

  • 如果仅作为静态资源或 HTTP 代理服务使用,通常启用 http 相关模块即可。
  • 如果需要代理 Nacos gRPC、数据库代理、TCP 转发等四层流量,请确保编译时包含 --with-stream
  • 离线安装场景下,建议保留所有源码包和最终编译参数,便于后续问题排查或环境复现。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐