背景:由于负载均衡测试服务器中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进程依然存在,执行如下: |