图文详解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解决前端访问资源跨域问题的方法详解
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
详解Apache SkyWalking 告警配置指南
Apr 22 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Rhit高效可视化Nginx日志查看工具
Nov 01 Servers
Nginx内网单机反向代理的实现
Nov 07 Servers
tomcat下部署jenkins的方法
May 06 Servers
Windows server 2022创建创建林、域树、子域的步骤
Jun 25 Servers
windows系统安装配置nginx环境
Jun 28 Servers
Nginx文件已经存在全局反向代理问题排查记录
Jul 15 Servers
源码安装apache脚本部署过程详解
Sep 23 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
基于php验证码函数的使用示例
2013/05/03 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
Prototype Object对象 学习
2009/07/12 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
Node.js编码规范
2014/07/14 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
python获取标准北京时间的方法
2015/03/24 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
python实现横向拼接图片
2020/03/23 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
SQL中where和having的区别
2012/06/17 面试题
Java程序开发中如何应用线程
2016/03/03 面试题
企业三严三实学习心得体会
2014/10/13 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
nginx配置限速限流基于内置模块
2022/05/02 Servers