图文详解Nginx版本平滑升级方案


Posted in Servers onSeptember 15, 2021

背景:

由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复。

Nginx平滑升级方案

1、案例采用版本介绍

旧版本 nginx-1.12.2.tar.gz

新版本 nginx-1.20.1.tar.gz

2、nginx-1.12.2版本为当前运行版本

图文详解Nginx版本平滑升级方案
图文详解Nginx版本平滑升级方案

设置端口8080和对主页index.html进行修改,后续进行平滑升级后,依然可以对其访问。

图文详解Nginx版本平滑升级方案

3、解压新版本 nginx-1.20.1.tar.gz编译安装至旧版本nginx-1.12.2目录下,运行原有nginx.conf配置文件,执行如下

./configure --prefix=/usr/local/nginx-1.12.2  --conf-path=/usr/local/nginx-1.12.2/nginx.conf --pid-path=/usr/local/nginx-1.12.2/nginx.pid --user=ngadm --group=ngadm --with-http_stub_status_module --without-http_rewrite_module 

make && make install

4、完成后1.20.1版本会自动在原sbin目录下生产新的nginx二进制文件,旧的nginx会自动被替换成nginx.old

图文详解Nginx版本平滑升级方案

5、平滑升级

Nginx对进程的控制能力非常强大,可以通过信号指令控制进程。常用的信号有:

  • -QUIT,表处理完当前请求后,关闭进程。
  • -HUP,表示重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑的重启Nginx。
  • -USR2,用于平滑升级可执行程序。
  • -WINCH,从容关闭工作进程。

根据nginx进程控制信号,执行如下:

kill -USR2 38323(旧进程PID为38323)
ps -ef |grep nginx

图文详解Nginx版本平滑升级方案

切换为新的master进程,关闭旧的work进程,注意此时旧的master进程依然存在,执行如下:

kill ?WINCH 38323 (旧进程PID为38323)
ps -ef |grep nginx

图文详解Nginx版本平滑升级方案

检查此时版本

sbin/nginx -v

图文详解Nginx版本平滑升级方案

已平滑升级成功。

注意:此时新版本nginx的masterPID为41063,同时也存在旧版本的master进程(旧进程PID为38323),若无需再回退时操作,可执行旧进程退出操作,执行如下:

kill ?QUIT 38323

回退步骤

关于回退操作分为两类:

1、事前对旧版本nginx进行备份,若出现问题,直接将旧版本重新拷贝会/usr/local目录下,重启nginx旧版本操作,执行如下:

killall nginx
cp nginx-1.12.2.bak nginx-1.12.2
/usr/local/nginx-1.12.2/sbin/nginx ?c /usr/local/nginx-1.12.2/nginx.conf

检查nginx状态
ps ?ef |grep nginx

2、在新版本nginx的master进程和旧版本的master进程同时存在时,执行如下:

切换回旧版本的master进程

kill -HUP 旧masterPID

图文详解Nginx版本平滑升级方案

关闭新版本nginx的master进程,并将原sbin目录下的nginx.old(旧版本nginx二进制文件)重新改回nginx,以便管理nginx。

kill -WINCH 新masterPID
kill -QUIT 新masterPID
cp /usr/local/nginx-1.12.2/sbin/nginx.old /usr/local/nginx-1.12.2/sbin/nginx

图文详解Nginx版本平滑升级方案

再次确认此时nginx版本已退回原版本

sbin/nginx -v

图文详解Nginx版本平滑升级方案

总结

到此这篇关于Nginx版本平滑升级方案的文章就介绍到这了,更多相关Nginx版本平滑升级内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
nginx proxy_cache 缓存配置详解
Mar 31 Servers
Nginx已编译的nginx-添加新模块
Apr 01 Servers
HDFS免重启挂载新磁盘
Apr 06 Servers
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
Apr 07 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
Mac电脑OS系统下安装Nginx的详细教程
Apr 14 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
Nginx 配置 HTTPS的详细过程
May 30 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
彻底卸载VMware虚拟机的超详细步骤记录
Jul 15 Servers
Linux在两个服务器直接传文件的操作方法
Aug 05 Servers
Shell中的单中括号和双中括号的用法详解
Dec 24 Servers
Nginx配置文件详解以及优化建议指南
Sep 15 #Servers
学习nginx基础知识
Nginx location 和 proxy_pass路径配置问题小结
Sep 04 #Servers
Nginx使用Lua模块实现WAF的原理解析
Nginx部署vue项目和配置代理的问题解析
centos8安装nginx1.9.1的详细过程
Aug 02 #Servers
Nginx反向代理至go-fastdfs案例讲解
Aug 02 #Servers
You might like
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
php生出随机字符串
2017/07/06 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
2014的自我评价
2014/01/13 职场文书
毕业生自荐书
2014/02/02 职场文书
书法比赛获奖感言
2014/02/10 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
装修活动策划方案
2014/08/27 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
2014年大学生工作总结
2014/11/20 职场文书
财务稽核岗位职责
2015/04/13 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers
python三子棋游戏
2022/05/04 Python