Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx-3.控制nginx

Nginx-3.控制nginx

作者头像
_淡定_
发布于 2020-02-26 06:04:31
发布于 2020-02-26 06:04:31
76900
代码可运行
举报
文章被收录于专栏:dotnet & javadotnet & java
运行总次数:0
代码可运行

nginx 通过信号来控制。对应linux系统就是用kill命令。

The command kill sends the specified signal to the specified process or process group. If no signal is specified, the TERM signal is sent.

master进程id在默认写入到/nginx/logs/nginx.pid文件中。文件也可以在nginx.conf文件中指定。master进程支持以下信号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kill -TERM `cat ./logs/nginx.pid` #快速停止master进程。
kill -QUIT `cat ./logs/nginx.pid` #优雅的停止。
kill -HUB `cat ./logs/nginx.pid` #改变配置文件。开启一个新的worker进程处理,优雅的停止老的worker 进程。相当于nginx -s reload
kill -USR1 `cat ./logs/nginx.pid` #重新打开log文件。-s reopen命令
kill -USR2 `cat ./logs/nginx.pid` #升级可执行文件。热部署
kill -WINCH `cat ./logs/nginx.pid` #优雅的关闭worker进程。

每个worker进程也可以接收信号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kill -TERM xxx #快速关闭worker进程
kill -QUIT xxx #优雅退出
kill -USR1 xxx #重新打开日志文件,先mv一个,再去执行这个命令。-s reopen命令

更改配置文件

  1. 发送HUP信号给master进程。
  2. master检查新的配置文件语法是否合理。
  3. 如果合理,根据新的配置文件打开新的socket连接监听。会创建新的worker进程,然后通知老的worker进程优雅的关闭。老进程收到消息后完成当前客户端的请求,然后自动关闭。
  4. 如果不合理,回滚,使用原先的配置文件继续运行。

日志切割

  1. 手动重命名log文件。
  2. 给master进程发送USR1信号。
  3. 重新打开文件。

热部署

  1. 备份一下原先的nginx文件。
  2. 把新的nginx二进制文件放到原先相同目录下。
  3. 给master进程发送USR2信号。
  4. master进程会把logs/nginx.pid文件复制一份为logs/nginx.pid.oldbin,然后运行新的nginx文件,生成新的worker进程。
  5. 新老master和worker共存。(如果没有成功可以看logs/error.log是否有日志)
  1. 给老master进程发送WINCH信号,老master就会发送信号让他对应的worker进程优雅的退出。QUIT信号。
  2. 然后就剩新的master和worker进程,以及老的master进程。

注意:老的master进程不会退出。可以用于必要时候的回滚操作。有两种情况。

  • 给老的master进程发送HUP信号,它会以不读取nginx.conf的方式启动新的worker进程。然后再给新的master进程发送QUIT信号让他优雅的退出。
  • 给新的master进程发送TERM信号,它会通知自己的worker进程立即退出。如果退出不成功,使用kill让worker进程强制退出。新的master退出之后,老的master进程会自动启动新的worker进程。

如果回滚,那么第四步的nginx.pid.oldbin文件会被丢弃。

如果升级成功,就给老的master进程发送QUIT信号,让其优雅的退出。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何关闭nginx服务_如何启动nginx
Nginx安装完成后,接下来我们要学习的是如何启动、重启和停止Nginx的服务。对于Nginx的启停在linux系统中也有很多种方式,我们本次课程介绍两种方式:
全栈程序员站长
2022/09/22
2.6K0
如何关闭nginx服务_如何启动nginx
Nginx 基本使用
前面在提到 Nginx 的高性能,其实也和它的架构模式有关。Nginx 默认采用的是多进程的方式来工作的,当将 Nginx 启动后,我们通过 ps -ef | grep nginx 命令可以查看到如下内容:
用户9615083
2022/12/25
4190
Nginx 基本使用
服务器无损升级技术解析
声明:本人原创文章,详细内容已发布在我的微信个人技术公众号---网络技术修炼,公众号总结普及网络基础知识,包括基础原理、网络方案、开发经验和问题定位案例等,欢迎关注。
用户1215536
2023/10/16
2270
服务器无损升级技术解析
nginx这些原理你都懂了吗?
以下两个信号专门用于进行nginx的热部署的时候使用,但是只能通过linux命令行的kill实现
公众号: 云原生生态圈
2021/11/15
6380
nginx这些原理你都懂了吗?
Nginx架构基础
Nginx其实有两种进程结构,一种是单进程结构,一种是多进程结构。单进程结构只适合我们做开发调试,在生产环境下,为了保持 Nginx 足够健壮,以及可以利用到 CPU 的多核特性,我们用到的是多进程架构的Nginx。
mazhen
2023/11/24
2050
Nginx架构基础
初识Nginx
Nginx提供的基本功能服务从大体上归纳为”基本HTTP服务”、“高级 HTTP服务”和”邮件服务”等三大类。
用户11097514
2024/05/31
790
初识Nginx
【Nginx】初识与环境准备
单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更快的响应请求。Nginx之所以有这么高的并发处理能力和这么好的性能原因在于Nginx采用了多进程和I/O多路复用(epoll)的底层实现。
十八岁讨厌编程
2022/12/10
5170
nginx+lua学习
1. nginx+lua学习 1.1. 网关架构 1.2. nginx命令和信号控制 nginx -s stop 快速关闭,不管有没有正在处理的请求 nginx -s quit 优雅关闭方式,推出前完
老梁
2019/09/10
1.3K0
nginx+lua学习
Nginx 热部署和日志切割,你学会了吗?
上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识,并通过日常遇到的热部署、切割日志文件场景来熟悉 Nginx 命令行操作。
武培轩
2019/11/04
4170
Nginx 热部署和日志切割,你学会了吗?
3-Nginx 命令详解
Nginx  -s 发送信号:  stop quit reopen reload
py3study
2020/01/14
7220
Nginx 平滑升级
随着 Nginx 越来越流行,Nginx 的版本迭代也越来越频繁,当我们需要使用某些新版本的特性或者修复某个旧版本的 BUG 时,就要对 Nginx 进行升级。然而线上业务大多是 7*24 小时不间断运行的,我们需要在升级的时候保证不影响在线用户的访问。Nginx 的热升级功能可以解决上述问题,它允许新老版本灰度地平滑过渡,这受益于 Nginx 的多进程架构。
Se7en258
2021/07/01
1.5K0
又拍云tokers-谈谈 nginx 信号集
昨天下午的时候,一台引流测试机器的一个 ngx_lua 服务突然出现了一些 HTTP/500 响应,从错误日志打印的堆栈来看,是不久前新发布的版本里添加的一个 Lua table 不存在,而有代码向其进行索引导致的。这令人百思不得其解,如果是版本回退导致的,那么为什么使用这个 Lua table 的代码没有被回退,偏偏定义这个 table 的代码被回退了呢?
用户2825413
2019/07/15
6490
Nginx-运行管理篇
master负责管理worker进程, 具体woker进程数由 worker_processes 指令配置。
用户2825413
2019/07/16
7620
Nginx-运行管理篇
nginx平滑升级编译headers-more模块
不想暴露某些服务器信息的时候,需要自定义response头信息,可以去修改nginx的源码,或者编译的时候,加上headers-more这个模块.
用户1168904
2021/07/20
9400
Nginx(一)
Nginx 现在已经是在 Web 开发中必不可少的技能了,我们通过几篇文章,来总结一下有关 Nginx 的知识。
1ess
2021/11/01
1970
Nginx----安装和配置文件参数详解
Nginx(“engine x”)一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】,是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是 2004年10月4号发布的0.1.0版本。
大忽悠爱学习
2021/12/08
2.4K0
Nginx----安装和配置文件参数详解
Nginx平滑升级
按照原来的编译参数安装 nginx 的方法进行安装,只需要到 make,千万不要 make install
Cyylog
2020/08/19
1.3K0
Nginx平滑升级源码分析
一、平滑升级步骤 1、重命名之前的sbin/nginx文件,将新的nginx文件放到sbin/目录下 #mv ./sbin/nginx ./sbin/nginx.old #cp ~/nginx ./sbin/ 2、向正在运行的nginx发送USR2信号启动新的nginx,这个时候新老nginx都会接收请求,看那一个进程能抢到锁,抢到锁的worker进程可以accpet新请求 #kill -USR2  `cat nginx.pid` 3、观察新的nginx运行无误后,向旧nginx发信号 停止旧nginx的运
magicsoar
2018/02/06
1.3K0
Nginx平滑升级源码分析
重启nginx后丢失nginx.pid的解决方法
停止操作是通过向nginx进程发送信号来实现的。 步骤1:查询nginx主进程号
全栈程序员站长
2021/12/23
2K0
【Nginx01】Nginx学习:命令行参数
对于 Nginx 来说,它不像其它很多别的工具一样,有很多的命令行参数,比如我们刚刚学习完的 Redis 中的 redis-cli 或者 redis-server 。Nginx 的命令行参数只有几个,相信不少同学也经常会用到,所以总体来说,今天学习的内容并不是特别的复杂。
硬核项目经理
2023/08/09
3740
【Nginx01】Nginx学习:命令行参数
相关推荐
如何关闭nginx服务_如何启动nginx
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验