图文详解Nginx版本平滑升级方案
背景:
由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复。
Nginx平滑升级方案
1、案例采用版本介绍
旧版本 nginx-1.12.2.tar.gz
新版本 nginx-1.20.1.tar.gz
2、nginx-1.12.2版本为当前运行版本


设置端口8080和对主页index.html进行修改,后续进行平滑升级后,依然可以对其访问。

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

5、平滑升级
Nginx对进程的控制能力非常强大,可以通过信号指令控制进程。常用的信号有:
- -QUIT,表处理完当前请求后,关闭进程。
- -HUP,表示重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑的重启Nginx。
- -USR2,用于平滑升级可执行程序。
- -WINCH,从容关闭工作进程。
根据nginx进程控制信号,执行如下:
kill -USR2 38323(旧进程PID为38323) ps -ef |grep nginx

切换为新的master进程,关闭旧的work进程,注意此时旧的master进程依然存在,执行如下:
kill –WINCH 38323 (旧进程PID为38323) ps -ef |grep nginx

检查此时版本
sbin/nginx -v

已平滑升级成功。
注意:此时新版本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的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版本已退回原版本
sbin/nginx -v

总结
到此这篇关于Nginx版本平滑升级方案的文章就介绍到这了,更多相关Nginx版本平滑升级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决使用了nginx获取IP地址都是127.0.0.1 的问题
这篇文章主要介绍了解决使用了nginx获取IP地址都是127.0.0.1 的问题,获取i工具的完整代码文中给大家提到,具体实例代码跟随小编一起看看吧2021-09-09
在linux中安装nginx及在树莓派ubuntu中安装nginx的方法
在进行软件安装时,若遇到报错,常见的解决方法之一是检查是否缺失依赖,并尝试安装所需的依赖包,记得去掉尖括号,对于nginx服务器,配置文件的位置和管理是关键操作之一,通过命令cd进入后,使用sudo nano index.nginx-debian.html命令打开并编辑默认的html文件2024-11-11
解决nginx服务器上发布的新版本代码总需要清除浏览器缓存问题
这篇文章主要介绍了解决nginx服务器上发布的新版本代码总需要清除浏览器缓存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-01-01
Nginx+PHP(FastCGI)搭建高并发WEB服务器(自动安装脚本)第二版
Nginx 0.7.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器(第5版) 编写2011-04-04


最新评论