图文详解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
解析在浏览器地址栏输入一个URL后发生了什么
Jun 21 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
nginx中proxy_pass各种用法详解
Nov 07 Servers
阿里云ECS云服务器快照的概念以及如何使用
Apr 21 Servers
阿里云 Windows server 2019 配置FTP
Apr 28 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
利用Apache Common将java对象池化的问题
Jun 16 Servers
解决Git推送错误non-fast-forward的方法
Jun 25 Servers
设置IIS Express并发数
Jul 07 Servers
Linux安装Docker详细教程
Jul 07 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
php下intval()和(int)转换使用与区别
2008/07/18 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
python 读取数据库并绘图的实例
2019/12/03 Python
pytorch SENet实现案例
2020/06/24 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
用python实现一个简单的验证码
2020/12/09 Python
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
《金色的脚印》教后反思
2014/04/23 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
保送生自荐信范文
2015/03/26 职场文书
退休欢送会主持词
2015/07/01 职场文书