Nginx 升级 OpenSSL 版本

目录

一、操作前准备

1.备份重要文件

2.检查当前版本

3.下载所需安装包

二、编译安装(核心步骤)

1.安装编译依赖

[2.获取原有 Nginx 编译参数](#2.获取原有 Nginx 编译参数)

[3.编译 Nginx(指定新 OpenSSL)](#3.编译 Nginx(指定新 OpenSSL))

三、验证升级结果

四、回滚方案(若升级失败)


一、操作前准备

1.备份重要文件

bash 复制代码
# 备份 Nginx 配置
cp -r /etc/nginx /etc/nginx.bak
# 备份 Nginx 二进制文件
cp /usr/sbin/nginx /usr/sbin/nginx.bak

2.检查当前版本

bash 复制代码
# 查看当前 Nginx 版本和关联的 OpenSSL 版本
nginx -V
# 查看系统自带的 OpenSSL 版本
openssl version

3.下载所需安装包

bash 复制代码
# 下载 OpenSSL 源码
wget https://www.openssl.org/source/openssl-3.0.12.tar.gz
# 下载 Nginx 源码(需和当前运行版本一致,或升级 Nginx 同时升级)
wget http://nginx.org/download/nginx-1.24.0.tar.gz

# 解压包
tar -zxf openssl-3.0.12.tar.gz
tar -zxf nginx-1.24.0.tar.gz

二、编译安装(核心步骤)

Nginx 无法直接替换 OpenSSL 动态库,必须重新编译 Nginx 并指定新的 OpenSSL 源码路径。

1.安装编译依赖

bash 复制代码
# CentOS/RHEL 系统
yum install -y gcc gcc-c++ make pcre-devel zlib-devel perl-IPC-Cmd perl-Text-Template perl-Data-Dumper
# Ubuntu/Debian 系统
apt-get install -y gcc g++ make libpcre3-dev zlib1g-dev

2.获取原有 Nginx 编译参数

bash 复制代码
nginx -V 2>&1 | grep -oP '(?<=configure arguments: ).*' > nginx_config_args.txt

执行后会把原有编译参数保存到 nginx_config_args.txt,后续编译需完全复用这些参数,仅新增 OpenSSL 路径

3.编译 Nginx(指定新 OpenSSL)

bash 复制代码
# 进入 Nginx 源码目录
cd nginx-1.24.0

# 执行配置(替换为你的 OpenSSL 路径和原有编译参数)
./configure $(cat ../nginx_config_args.txt) --with-openssl=../openssl-3.0.12

# 编译(-j 后接CPU核心数,加速编译)
make -j4

# 替换 Nginx 二进制文件(软升级,不中断服务)
make upgrade

三、验证升级结果

bash 复制代码
# 检查 Nginx 关联的 OpenSSL 版本
nginx -V | grep openssl

# 示例输出(表示升级成功):
# built with OpenSSL 3.0.12 24 Oct 2023

四、回滚方案(若升级失败)

如果升级后 Nginx 无法启动,立即回滚

bash 复制代码
# 停止异常的 Nginx
systemctl stop nginx

# 恢复备份的二进制文件
cp /usr/sbin/nginx.bak /usr/sbin/nginx

# 恢复配置(如需)
cp -r /etc/nginx.bak/* /etc/nginx/

# 重启 Nginx
systemctl start nginx
相关推荐
天天喝旺仔5 分钟前
Linux 性能排查实战:用 perf、strace 与火焰图定位 CPU、内存与 IO 瓶颈
linux·性能优化·运维开发
LuminousCPP11 分钟前
Linux系统编程(二):从目录树到命令执行|路径、环境变量、alias 与文件操作入门
linux·经验分享·笔记
第十人i14 分钟前
Linux 系统初始化配置清单:新服务器快速部署
linux·服务器
LongRunning16 分钟前
【Linux】RK3568-OpenCV+YOLO(七)
linux
j7~24 分钟前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程
Lsetea1 小时前
部署证书后提示“证书名称与输入不匹配”:Safari 报错的三层排查
nginx·https·safari·ssl证书·openssl
傲世仙尊1 小时前
设计者的取舍-路径fork的诞生与全局文件队列
linux
逐流人1 小时前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
Wang's Blog1 小时前
Java 项目实战: 外卖平台-后台退出功能与首页iframe架构
java·服务器·redis
Wang's Blog1 小时前
Java 项目实战: 外卖平台-软件开发流程与项目整体介绍
java·服务器·redis