图文详解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 相关文章推荐
Apache站点配置SSL强制跳转443
Mar 09 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Shell脚本一键安装Nginx服务自定义Nginx版本
Mar 20 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
nginx location 带斜杠【 / 】与不带的区别
Apr 13 Servers
nginx搭建NFS网络文件系统
Apr 14 Servers
配置nginx负载均衡
May 06 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
Docker与K8s关系介绍不会Docker也可以使用K8s
Jun 25 Servers
Nginx代理Redis哨兵主从配置的实现
Jul 15 Servers
Windows7下FTP搭建图文教程
Aug 05 Servers
Valheim服务器 Mod修改安装教程 【ValheimPlus】
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
php 验证码实例代码
2010/06/01 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
探寻Javascript执行效率问题
2014/11/12 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
python实现的文件同步服务器实例
2015/06/02 Python
Python自定义线程类简单示例
2018/03/23 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Django 路由系统URLconf的使用
2018/10/11 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
了解一下python内建模块collections
2020/09/07 Python
基本款天堂:Everlane
2017/05/13 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
物流仓管员工作职责
2014/01/06 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
2014年标准化工作总结
2014/12/17 职场文书
超市主管竞聘书
2015/09/15 职场文书
大学生党课心得体会
2016/01/07 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle