Nginx平滑升级

有时候我们可能需要对Nginx进行升级,例如检测到Nginx漏洞,或者因为业务需要等情况。
下面我就来说一下Nginx平滑升级步骤
整个升级过程中,无需停止Nginx服务,不会影响到业务
需求模拟:nginx-1.18.0 =》nginx-1.19.0
环境说明:
系统版本:Centos7.7
Nginx版本:nginx-1.18.0

(一)编译新版本nginx

注意:无需执行make install,一旦执行make install会导致原nginx程序异常
如需验证nginx业务是否有受到影响,请跳转至第三步

tar -zxvf nginx-1.19.0.tar.gz
cd nginx-1.19.0/
./configure --prefix=/usr/local/nginx
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak    #原nginx可执行文件备份
cp objs/nginx /usr/local/nginx/sbin/nginx    #新版本的nginx编译后,会在objs目录下生成一个可执行nginx文件,使用该文件代替原nginx可执行文件
make upgrade    #执行升级,原nginx要求使用绝对路径运行,如下图。执行到这里就算是升级完成了

 (二)确认是否升级成功

比较简单的办法,就是直接nginx -V查看一下版本信息,如下。可以可以看到升级到1.19版本了

[root@bp nginx-1.19.0]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.19.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
configure arguments: --prefix=/usr/local/nginx

(三)验证nginx业务是否受到影响

我写了个脚本检测nginx页面返回码,如下

[root@bp ~]# cat nginxcode.sh 
#!/bin/bash
while (true)
do
    curl --silent -I 106.13.13.242|grep 200 >> code.txt
done
[root@bp ~]# nohup ./nginxcode.sh &
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
。。。

在平滑升级过程中,另开一个窗口查看脚本输出情况,该脚本正常情况下会一直输出200返回码,即说明nginx业务未受影响

原文地址:https://www.cnblogs.com/biaopei/p/13045375.html