加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 运营中心 > Nginx > 正文

图文详解Nginx版本平滑升级方案

发布时间:2023-02-17 12:54:43 所属栏目:Nginx 来源:互联网
导读:背景: 由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复。 Nginx平滑升级方案 1、案例采用版本介绍 旧版本 nginx-1.12.2.tar.gz 新版本 nginx-1.20.1.tar.gz 2、nginx-1.12.2版本为当

  背景:
  由于负载均衡测试服务器中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
 
 
  检查此时版本
 
  1
  sbin/nginx -v
 
 
  已平滑升级成功。
 
  注意:此时新版本nginx的masterPID为41063,同时也存在旧版本的master进程(旧进程PID为38323),若无需再回退时操作,可执行旧进程退出操作,执行如下:
 
  1
  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
 

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读