热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

NginxAPI学习之二:控制nginx

控制nginxControllingnginx目录控制nginx修改配置文件轮转日志文件动态更新可执行文件可以通过信号控制nginx,主进程pid默认写入usrlocalnginx

控制nginx

Controlling nginx


目录



  • 控制nginx

    • 修改配置文件

    • 轮转日志文件

    • 动态更新可执行文件



可以通过信号控制 nginx,主进程 pid 默认写入 /usr/local/nginx/logs/nginx.pid 文件。名称可能在配置时候,或是通过 nginx.confpid 指令修改。主进程支持以下信号指令:



  • TERM, INT 快速关闭

  • QUIT 从容关闭

  • HUP 修改配置文件,跟上时区的变化(仅适用于FreeBSD和Linux系统),针对修改后的配置文件创建一个新的工作进程,从容关闭原工作进程

  • USR1 重新打开日志文件

  • USR2 更新可执行文件

  • WINCH 从容关闭工作进程

尽管不是必须的,独立的工作进程也可以通过信号来控制。支持的信号指令如下:



  • TERM, INT 快速关闭

  • QUIT 从容关闭

  • USR1 重新打开日志文件

  • WINCH 调试时非正常中止(需要启用debug_points)


修改配置文件

为了让 nginx 重读配置文件,需要向主进程发送 HUP 信号,主进程首先检查配置文件语法有效性,然后尝试应用新配置,即打开日志文件和新的监听端口。如果失败,回滚修改继续使用旧的配置,如果成功,创建新的工作进程,发送信号到旧的工作进程,从容关闭它们,旧的进程关闭监听端口,继续服务旧客户端,服务完成,关闭旧的工作进程。

通过例子描绘以下这个过程。假设 nginx 运行在 FreeBSD,执行下面命令:

ps -axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'

输出如下所示:

发送 HUP 信号到主进程,输出结果为:

PID 为 33129 的原工作进程仍然继续工作,一段时间后再退出:


轮转日志文件

为了轮转日志文件,首先需要重命名文件,然后给主进程发送 USR1 信号,之后主进程将重启所有正打开的日志文件,给这些文件分配无权限的用户作为所有者,工作进程运行在这些用户下。在重启成功后,主进程关闭所有打开的日志文件,并发送消息给工作进程重启文件,工作进程立即打开新的日志文件,关闭旧的文件。因此,旧文件几乎马上进行后续处理,例如压缩处理。


动态更新可执行文件

为了更新服务器可执行文件,需要把新文件放在旧文件位置,发送 USR2 信号到主进程,主进程先依据 进程ID 重命名原文件,加上后缀为 .oldbin,例如 /usr/local/nginx/logs/nginx.pid.oldbin,然后启动新文件,依次启动新的工作进程。

之后,所有工作进程(新的和旧的)继续接收请求,如果发送 WINCH 信号给第一个主进程,它会发送消息给对应工作进程,让它们从容关闭,然后工作进程开始退出:

一段时间之后,只留新工作进程继续处理请求:

以上会发现旧的主进程并没有关闭其监听端口,如果需要,仍然可以再次启动其工作进程。若是因为某些原因新的可执行文件执行失败,以下内容其中一条会被执行:



  • 发送 HUP 信号到原主进程,主进程将在不重读配置文件的情况下启动新的工作进程,然后发送 QUIT 信号给新的主进程来从容关闭所有新进程。

  • 发送 TERM 信号给新主进程,主进程发送消息给其工作进程让它们立即退出,工作进程几乎即刻退出(若是因为某些原因新进程未退出,应该发送 KILL 信号强制退出),当新主进程退出时,原主进程将自动启动新工作进程。

如果新主进程退出,原主进程依据 进程ID 删除后缀 .oldbin

如果成功更新,然后发送 QUIT 信号给原主进程,只留新进程:


原文链接:https://www.cnblogs.com/lily-210712/p/15136758.html



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了如何在VSCode中查看运行日志的方法,对于新手来说,需要注意日志文件的设置位置。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
author-avatar
政哲俊其舒涵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有