图文详解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配置https实现域名访问项目(图文教程)
Mar 31 Servers
Nginx配置Https安全认证的实现
May 26 Servers
Nginx虚拟主机的搭建的实现步骤
Jan 18 Servers
使用 Apache 反向代理的设置技巧
Jan 18 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
基于Apache Hudi在Google云构建数据湖平台的思路详解
Apr 07 Servers
centos7安装mysql5.7经验记录
May 02 Servers
Vscode中SSH插件如何远程连接Linux
May 02 Servers
Nginx开源可视化配置工具NginxConfig使用教程
Jun 21 Servers
搭建zabbix监控以及邮件报警的超级详细教学
Jul 15 Servers
Apache SkyWalking 监控 MySQL Server 实战解析
Sep 23 Servers
解决ubuntu安装软件时,status-code=409报错的问题
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
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
Javascript中的数学函数
2007/04/04 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
详解python的数字类型变量与其方法
2016/11/20 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python如何调用字典的key
2020/05/25 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
博士研究生自我鉴定范文
2013/12/04 职场文书
马智宇结婚主持词
2014/04/01 职场文书
学校献爱心活动总结
2014/07/08 职场文书
七一讲话心得体会
2014/09/05 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2014年人事部工作总结
2014/12/03 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
Python代码实现双链表
2022/05/25 Python