网络安全实战nginx漏洞版本升级 1.28.0到1.30.0
2026/4/23 10:23:57 网站建设 项目流程

下载版本地址:https://nginx.org/en/download.html

系统环境:ubuntu 24.04

一、下载并编译新版nginx

1.下载nginx1.30.0

wget https://nginx.org/download/nginx-1.30.0.tar.gz

2.解压

tar -zxvf nginx-1.30.0.tar.gz

3.移动到/usr/local目录(个人习惯也可以略过此步骤)

mv nginx-1.30.0 /usr/local/

4.先确定一下当前版本xinx

cd /usr/local/nginx/sbin/

./nginx -v

显示nginx version: nginx/1.28.0

5.编译新版本

cd /usr/local/nginx-1.30.0

./configure

继续执行make命令

执行成功以后,回在当前目录产生一个objs目录

注意事项:

编译产生物理路径:nginx/objs/nginx

禁止执行 make install 防止覆盖现有配置

出现 ./configure:error 需要检查缺失的依赖库

二、替换可执行文件,平滑升级

1.替换可执行文件

备份旧版本方便报错回滚

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

备份配置文件(可选)

cp -r /usr/local/nginx/conf /usr/local/nginx/conf.bak

将新编译的objs/nginx 复制到旧版本安装目录中

cp objs/nginx /usr/local/nginx/sbin/

注意此时操作会提示 cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy 。表面正在被运行的nginx进程占用。 需要先通过nginx平滑升级流程 处理旧进程,确保替换二进制文件时不会冲突。

2.进行平滑升级处理

获取旧版本nginx 主进程PID

cat /usr/local/nginx/logs/nginx.pid

发送USR2 信号启动新版本的master进程

kill -USR2 449621

此时,nginx 会启动新的master进程,并加载新版本配置文件,旧版本master进程仍然在运行,但新的master进程已经启动。

替换二进制文件

mv objs/nginx /usr/local/nginx/sbin/

关闭旧版本进程

发送winch信号,逐步关闭旧版本worker进程

kill -WINCH 449621

检查进程状态

ps -ef |grep nginx

此时旧的会话被新的nginx进程替代,在检查新nginx 不影响业务之后,就可以完全停止旧进程了

完全关闭旧版本master进程

kill -QUIT 449621

检查新版本是否运行

验证版本信息

/usr/local/nginx/sbin/nginx -v

回滚方案(如升级失败)

恢复备份文件

cp /usr/local/nginx/sbin/nginx.bak /usr/local/nginx/sbin/nginx

重启旧版本进程

kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)

启动旧版本nginx

/usr/local/nginx/sbin/nginx

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询