nginx无网络升级的实现示例

 更新时间:2026年10月28日 08:57:35   作者:xixingzhe2  
本文详细介绍了在无网络环境下通过源码编译方式升级Nginx的完整流程,包括下载源码、复用原有configure参数、编译不安装、安全替换二进制文件,以及使用kill和nginx -s两种方式发送信号实现平滑停止或热升级,感兴趣的可以了解一下

1、概述

在没有网络的环境中,无法使用包管理器一键升级。最可靠的方式是:在外网下载好新版本的Nginx源码包及其编译依赖,上传到内网服务器,通过源码编译的方式进行升级。

2、升级

2.1 下载源码

wget https://nginx.org/download/nginx-1.30.4.tar.gz

2.2 查看现有编译参数

复制configure arguments后面全部参数

[root@ ~]# nginx -V
nginx version: nginx/1.21.4
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-stream --with-stream_ssl_preread_module

2.3 解压源码

[root@ nginx]# tar -zxvf nginx-1.30.4.tar.gz
[root@ nginx]# cd nginx-1.30.4

2.4 执行 configure(粘贴你原有全部编译参数)

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-stream --with-stream_ssl_preread_module

2.5 编译,不要 make install

make 

2.6 替换二进制文件

#备份旧二进制
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 停止nginx
/usr/local/nginx/sbin/nginx -s stop
#复制新生成程序
cp objs/nginx /usr/local/nginx/sbin/
# 启动nginx
/usr/local/nginx/sbin/nginx

kill方式

停止和热升级区别

停止nginx:kill -TERM $(cat /usr/local/nginx/logs/nginx.pid)

指令信号行为结果业务影响使用场景
kill -USR2SIGUSR2启动新 Nginx 进程组,老进程保留,服务不停止零停机,服务持续运行nginx 二进制版本平滑升级
kill -TERMSIGTERM等待现有请求处理完,全部进程退出,服务停止服务最终下线优雅关停 Nginx 服务

补充容易混淆的 Nginx 常用信号

kill -HUP  pid   # 平滑重载配置,不重启进程,修改conf后生效
kill -QUIT pid   # 优雅退出(和TERM行为接近,nginx官方推荐优雅停止用QUIT)
kill -USR1 pid   # 重新打开日志文件(日志切割)
kill -USR2 pid   # 二进制平滑升级
kill -WINCH pid  # 让老worker逐步退出(配合USR2升级之后使用)

nginx方式

停止

# 停止nginx
/usr/local/nginx/sbin/nginx -s stop

nginx -s 信号控制命令

语法:nginx -s <signal>,仅给 master 进程发信号,不需要 kill 手动指定 pid

# 完整停止:立刻终止所有worker,断开连接,业务中断
nginx -s stop
# 优雅停止:处理完现有连接后再退出,不强行切断现有请求(生产优先用)
nginx -s quit
# 重载配置:平滑加载nginx.conf,不中断业务,热更新配置
nginx -s reload
# 重新打开日志文件,日志切割后执行,用于logrotate切割日志
nginx -s reopen

2.7 校验版本

nginx -v
nginx -t

到此这篇关于nginx无网络升级的实现示例的文章就介绍到这了,更多相关nginx无网络升级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决nginx代理 url重写的问题

    解决nginx代理 url重写的问题

    这篇文章主要介绍了解决nginx代理 url重写的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • Nginx负载均衡配置简单配置方法

    Nginx负载均衡配置简单配置方法

    Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器。下面通过本文给大家分享Nginx负载均衡配置简单配置方法,需要的的朋友参考下吧
    2017-08-08
  • nginx代理部署Vue刷新页面404的问题解决

    nginx代理部署Vue刷新页面404的问题解决

    在上线vue开发的前端网页部署在服务器上后,刷新页面显示404,本文就来介绍一下nginx代理部署Vue刷新页面404的问题解决,感兴趣的可以了解一下
    2023-12-12
  • Nginx在Linux中的配置及维护全教程

    Nginx在Linux中的配置及维护全教程

    Nginx是一款高性能的开源HTTP和反向代理服务器,以其高并发处理能力和低资源消耗而闻名,它支持多种功能,Nginx的配置文件基于文本,易于理解和修改,使其成为 Web 开发和运维人员的首选工具之一,本文给大家介绍了Nginx在Linux中的配置及维护全教程
    2025-02-02
  • Mac上搭建nginx+rtmp直播服务器的步骤详解

    Mac上搭建nginx+rtmp直播服务器的步骤详解

    最近的直播很火,所以这篇文章跟大家分享了在Mac上搭建nginx+rtmp直播服务器的步骤,文章通过一步步图文介绍的很详细,有需要的朋友们可以参考借鉴。
    2016-09-09
  • 在Nginx上配置多个站点的方法

    在Nginx上配置多个站点的方法

    这篇文章主要介绍了在Nginx上配置多个站点的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Nginx负载均衡(架构之路)详解

    Nginx负载均衡(架构之路)详解

    这篇文章主要为大家详细介绍了Nginx负载均衡的相关资料,如何配置三台服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • nginx+tomcat实现多级反向代理的示例代码

    nginx+tomcat实现多级反向代理的示例代码

    本文介绍在CentOS系统下安装Tomcat、配置虚拟主机多级目录,并通过Nginx反向代理将请求转发至指定IP,构建多级代理拓扑实现负载均衡与访问控制,感兴趣的可以了解一下
    2025-07-07
  • CentOS7下非编译安装Nginx的图文教程

    CentOS7下非编译安装Nginx的图文教程

    这篇文章主要为大家详细介绍了CentOS7下非编译安装Nginx的图文教程,文中通过示例图片进行了详细讲解,有需要的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • 详解用ELK来分析Nginx服务器日志的方法

    详解用ELK来分析Nginx服务器日志的方法

    这篇文章主要介绍了用ELK来分析Nginx服务器日志的方法,ELK是三个开源软件的缩写,分别表示Elasticsearch,Logstash,Kibana,需要的朋友可以参考下
    2016-03-03

最新评论