图文详解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
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
nginx对http请求处理的各个阶段详析
Mar 31 Servers
Nginx设置日志打印post请求参数的方法
Mar 31 Servers
Nginx解决403 forbidden的完整步骤
Apr 01 Servers
nginx实现动静分离的方法示例
Nov 07 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
Shell脚本一键安装Nginx服务自定义Nginx版本
Mar 20 Servers
idea下配置tomcat避坑详解
Apr 12 Servers
Nginx 配置 HTTPS的详细过程
May 30 Servers
GPU服务器的多用户配置方法
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实现小型站点广告管理(修正版)
2006/10/09 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Python3最长回文子串算法示例
2019/03/04 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
python 实现汉诺塔游戏
2020/11/28 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
外企测试工程师面试题
2015/02/01 面试题
汽车驾驶求职信
2013/10/25 职场文书
教师求职推荐信范文
2013/11/20 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
实习指导老师评语
2014/04/26 职场文书
2014年创卫工作总结
2014/11/24 职场文书
关于五一放假的通知
2015/08/18 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
MySql分区类型及创建分区的方法
2022/04/13 MySQL