热门标签 | 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



推荐阅读
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 使用Nginx反向代理实现多域名端口映射
    本文介绍如何通过配置本地hosts文件和Nginx反向代理,实现多个虚拟域名的端口映射,使用户可以通过标准HTTP端口80访问不同后端服务。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 在API测试中,我们常常需要通过大量不同的数据集(包括正常和异常情况)来验证同一个接口。如果为每种场景单独编写测试用例,不仅繁琐而且效率低下。采用数据驱动的方式可以有效简化这一过程。本文将详细介绍如何利用CSV文件进行数据驱动的API测试。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
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社区 版权所有