一文弄懂Nginx热升级

 更新时间:2024年05月26日 16:04:13   作者:莽村宏伟  
Nginx热升级指服务不中断情况下用新的Nginx二进制文件替换老的Nginx二进制文件,本文就来介绍一下Nginx热升级,感兴趣的可以了解一下

1、热升级步骤

  • Nginx
    • 备份原有nginx二进制文件
    • 拷贝新nginx二进制文件到sbin目录下
    • 使用 kill -USR2 master进程PID
    • 使用kill -WINCH master进程PID关闭老workr进程
    • 回退老master进程时只需reload即可

OpenResty热升级与Nginx相同

2、热升级实现

备份旧版本Nginx二进制文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

下载最新版本的 nginx,解压后进行编译,将新版本的Nginx二进制文件拷贝到旧版本的sbin目录下

旧版本nginx二进制文件编译了那些库,新版本也要有相同的库,安装地址也要相同

wget https://nginx.org/download/nginx-1.26.0.tar.gz
tar -zxvf nginx-1.26.0.tar.gz
cd nginx-1.26.0
./configure
make
cp objs/nginx /usr/local/nginx/sbin/

查看 nginx 运行状况

1715063157690.png

发送信号使 nginx 的旧版本停止接收请求

kill -USR2 51393

再次查看 nginx 运行状况

1715063246935.png

发送USER2信号后master会重命名pid文件,在文件后添加oldbin后缀。然后master进程会用新Nginx文件启动一个新的master进程,

1715063396061.png

发送WINCH信号给旧master进程,优雅的关闭旧worker进程

kill -WINCH 51393

再次检查进程情况,旧master的worker已经关闭了,旧master不会自己退出,用作版本回退

1715063544549.png

确认正常后,可以关闭旧master

kill -QUIT 51393

3、升级失败回退

用于nginx升级失败立马回退版本,如果没有备份只能再走一起热升级,回退版本。

使用备份文件覆盖新版本Nginx二进制文件

mv /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx

向旧版本master进程发送HUP信号,拉起worker进程

kill -HUP 51393

1715064496059.png

发送USR2信号,停止新版本master进程接收请求

kill -USR2 53976

关闭新版本的服务进程

kill -WINCH 53976

1715064746592.png

退出新版本进程

kill -QUIT 53976

再次查看,新版本的master进行已停止

1715064833468.png

到此这篇关于一文弄懂Nginx热升级的文章就介绍到这了,更多相关Nginx热升级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx服务器连接数告警处理及解决方案

    Nginx服务器连接数告警处理及解决方案

    本文详细介绍了处理Nginx服务器连接数告警问题的方法,首先,通过查看连接状态和Nginx配置,可以确定是Nginx与upstream的连接是短连接,未开启长连接配置,其次,需要检查客户端的长连接配置,并可能需要优化操作系统的内核参数
    2025-12-12
  • nginx中的listen指令实例解析

    nginx中的listen指令实例解析

    这篇文章主要给大家介绍了关于nginx中listen指令解析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Nginx搭建高可用的实现

    Nginx搭建高可用的实现

    高可用HA是分布式系统架构设计中必须考虑的因素之一,本文主要介绍了Nginx搭建高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 详解用Nginx搭建CDN服务器方法(图文)

    详解用Nginx搭建CDN服务器方法(图文)

    这篇文章主要介绍了详解用Nginx搭建CDN服务器方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Linux服务器下nginx的安全配置详解

    Linux服务器下nginx的安全配置详解

    本篇文章主要介绍了Linux服务器下nginx的安全配置详解,Nginx在很多高流量网站上得到了应用,有需要的朋友可了解一下。
    2016-10-10
  • PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    这篇文章主要介绍了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法,涉及nginx平台的相关配置技巧,需要的朋友可以参考下
    2016-05-05
  • nginx配置多个站点共用80端口的解决方法

    nginx配置多个站点共用80端口的解决方法

    这篇文章主要介绍了nginx配置多个站点共用80端口的解决方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Nginx服务器下配置个性二级域名及多个域名的实例讲解

    Nginx服务器下配置个性二级域名及多个域名的实例讲解

    这篇文章主要介绍了Nginx服务器下配置个性二级域名及多个域名的实例讲解,注意一下rewrite的写法规则,需要的朋友可以参考下
    2016-01-01
  • 详解Nginx日志配置及日志切割

    详解Nginx日志配置及日志切割

    本篇文章主要介绍了详解Nginx日志配置及日志切割,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 使用Nginx配置文件服务器方式

    使用Nginx配置文件服务器方式

    这篇文章主要介绍了使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论