Nginx核心知识100讲学习笔记(陶辉)Nginx架构基础(一)

article/2025/9/29 20:18:01

(转载,非常不错的文章)

一、Nginx的请求处理流程进程结构

1、Nginx的请求处理流程

 

2、Nginx的进程结构

 

 3、进程作用

1、Master进程

1、是进行work进程的监控管理的
2、看看work进程是否正常工作需不需要进行热部署、需不需要重新载入配置文件

2、Cache manager 缓存的管理

1、缓存为反向代理后端发来的动态请求做缓存使用

2、缓存在不光是在work进程间使用、还要被Cache manager和Cache loader使用

3、Cache loader 载入缓存

二、Nginx的进程结构实例演示

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24191 24145 0 11:36 ? 00:00:00 nginx: worker process

nobody 24192 24145 0 11:36 ? 00:00:00 nginx: worker process

root 24196 24153 0 11:38 pts/1 00:00:00 grep --color=auto nginx

[root@luoahong conf]# ../sbin/nginx -s reload

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24198 24145 0 11:38 ? 00:00:00 nginx: worker process

nobody 24199 24145 0 11:38 ? 00:00:00 nginx: worker process

root 24201 24153 0 11:38 pts/1 00:00:00 grep --color=auto nginx

[root@luoahong vim]#kill -SIGHUP 24145

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24203 24145 0 11:40 ? 00:00:00 nginx: worker process

nobody 24204 24145 0 11:40 ? 00:00:00 nginx: worker process

root 24206 24153 0 11:40 pts/1 00:00:00 grep --color=auto nginx

kill -SIGHUP 24145和../sbin/nginx -s reload的作用一样

三、使用信号管理Nginx的父子进程

四、reload和热升级

1、reload重载配置文件的真相

1、向master进程发送HUP信号(reload命令)

2、master进程校验配置语法是否正确

3、master进程进程打开新的监听端口

为什么要打开新的监听端口?因为有可能会打开原来没有打开过的端口

4、master进程用新配置启动新的worker子进程

设置定时器 worker_shutdown_timeout

5、master进程向老worker子进程发送OUIT信号

6、老worker进程关闭监听句柄,处理完当前连接后结束进程

2、不停机载入新的配置文件

3、热升级的完整流程(文字)

1、将旧Nginx文件换成新Nginx文件(注意备份)

nginx的Master进程的PID会记录在logs目录的nginx.pid文件中、新nginx和老的nginx 所有的目录必须一致

2、向master进程发送USR2信号

没有办法通过nginx命令行发送信号处理,是因为到目前为止还没有这样的信号

3、master进程修改pid文件名,加后缀.oldbin

nginx的Master进程的PID会记录在logs目录的nginx.pid文件中

4、master进程用新的Nginx文件启动新的master进程
5、向老master进程发送QUIT信号,关闭老master
6、回滚:向老master发送HUP,向新master发送OUIT

4、不停机更新nginx二进制文件

五、优雅地关闭worker进程

worker进程优雅的关闭,主要针对的是HTTP请求。代理websocker协议,TCP,UDP层的时候不能优雅推出

1、设置定时器 worker_shutdown_timeout
2、关闭监听句柄 :保证要关闭的进程不再处理新的连接
3、关闭空闲连接 :为了利用最大化,会保存一些空闲的连接,这时会被关闭。
4、在循环中等待全部连接关闭:每发现一个请求处理完毕就会把这个连接关闭。超过设置的worker_shutdown_timeout的时间,会立即退出。
5、退出进程

作者:罗阿红 出处:http://www.cnblogs.com/luoahong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。


http://chatgpt.dhexx.cn/article/mUolVrHp.shtml

相关文章

在这里,NGINX 创始人 Igor Sysoev 将亲述 NGINX 的诞生史

2020 年 5 月 20 日,一场 NGINX 在国内的盛会、一个所有 NGINX 用户 & 爱好者朝圣的最佳场所,F5 线上技术峰会 – NGINX 专场将以线上直播的形式面向所有开发者召开。届时各位 NGINX 开发者心目中的偶像 NGINX 创始人 Igor Sysoev 以及国内 NGINX 技…

如何用NGINX实现UDP四层反向代理?

原文作者:陶辉 原文链接:如何用NGINX实现UDP四层反向代理?- NGINX开源社区 转载来源:NGINX开源社区 在实时性要求较高的特殊场景下,简单的UDP协议仍然是我们的主要手段。 UDP协议没有重传机制,还适用于同时…

Nginx深度剖析,真是被大牛讲透了

开篇 Nginx是一款非常出色的服务器软件,从开始工作到现在,周围所有的公司都在使用Nginx。在多年的使用过程中,逐渐对Nginx的源码产生了浓厚的兴趣,我不满足于仅仅会使用,我想更加深入的理解它的内部工作原理。只有深入…

CPGIS三十周年专访系列|陶闯主席

近日,国际华人地理信息科学协会CPGIS建会30周年之际,开展了一次历届主席专访活动,陶闯博士作为国际华人地理信息科学协会CPGIS,2000-2001届的主席,接受了CPGIS的专访,忆往昔,看今朝,…

【10道大厂必考的计算机网络问题】陶辉老师

目录 1.请详细介绍一下TCP的三次握手协议,为什么要三次握手? 2.说说HTTP协议中缓存的处理流程?缓存的应用流程?与缓存相关的HTTP头部? 3.在地址栏键入URL后,网络世界发生了什么? 4.使用HTTP长连接有哪些优点&#…

HTTP详细介绍

转自:HTTP详细介绍本文参考 wiki百科、陶辉老师《Web协议详解与抓包实战》 和 作者在一线多年的运维工作总结希望对大家有所帮助。常见osi模型(7层)发起组织: 国际电信联盟电信标准化部门,与国际标准组织(ISOhttps://www.pinlue.c…

10 道大厂面试必考的计算机网络问题-陶辉 极客时间

大厂中更多会考察你的长板. 在大厂中要学会求助 1.TCP的三次握手机制,为什么要三次? 为什么需要握手? 需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口. 为什么是3次? 正常想法应该是: C:我要建连接,我的seq是这个; S:我收到了 S:我的Seq是这个 C:我也收到了…

TVP思享 | 四个全新维度,极限优化HTTP性能

导语 | 当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议。那么,要想极限优化HTTP性能,应该从哪些维度出发呢?本文将由TVP陶辉老师,为大家分享四个全新维度。「TVP思享」专栏,凝结大咖思考&#xff0c…

uni-app从入门到放弃(一)

文章目录 一、uni-app简单介绍什么是uni-app?uni-app的优点跨平台发行,运行体验更好通用前端技术栈,学习成本更低开发生态,组件更丰富 二、功能框架浏览图三、创建项目1、安装HBuilderX2、创建uni-app3、运行项目4、官方提示 四、项目中使用扩展组件五、…

CUDA——从入门到放弃

1. 知识准备 1.1 中央处理器(CPU) 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit&#xf…

MySQL从入门到放弃(三)

插入数据 插入数据之前首先创建一张persons表 CREATE TABLE persons( id INT NOT NULL AUTO_INCREMENT, name CHAR(40) NOT NULL DEFAULT 无名, age INT NOT NULL DEFAULT 0, info CHAR(50) NULL, PRIMARY KEY(id) ); 为表的所有字段插入数据 一次插入一条数据 INSERT INTO…

Python从入门到放弃

Python基础知识: Python列表 Python元组 Python字符串 Python字典 Python正则 Python字典排序 Python编码Python正则表达式 Python集合 Python map Python reduce Python lambdaPython 函数Python 文件 Python数据可视化编程: Python数据可视化Python画…

1、LabVIEW从入门到放弃

LabVIEW从入门到放弃 一、其实不想学二、学习资源三、成果展示四、声明 一、其实不想学 最近导师想要用LabVIEW写点东西,进行一些实验验证。虽然之前摸过几天,也就是为了应付考试,啥都没学到。接下来时间可能真的需要从入门到放弃了~   总结…

Linux从入门到放弃

mac环境下的linux搭建 一.linux作为一个开源的操作系统,以其稳定性和安全性,是程序员必不可少且需要掌握的系统。可能用惯了windows以及mac的我们一开始用起来很难受,但相信我,用惯了以后,你会更难受。小玩笑而已&…

C语言从入门到放弃

Unix是C的作者开发的。 Unix附属诞生物,当时使用的是cc编译器 然后有了linux就封装成了gcc编译器,但由于考虑到老家伙的使用习惯,还保留了cc C语言是结构化程序语言(一个程序能包含多个函数).C语言简单粗暴&#xff0c…

c语言从入门到秃头表情包,c语言从入门到放弃表情包 - c语言从入门到放弃微信表情包 - c语言从入门到放弃QQ表情包 - 发表情 fabiaoqing.com...

从入门到精神异常(资深病友狗头著)_精神异常_病友_狗头表情 不好意思拿错了(Java Web从入门到精通)_拿错_JAVA_Web表情 C语言从研发到脱发_脱发_研发_语言表情 我也只是新手入门第一次见有人就如此会装逼 幸会幸会 哪里的话_新手入门_装逼_幸会幸表情 熊猫头写个C语言(666)_666…

深度学习---从入门到放弃(七)CNN进阶,迁移学习

深度学习—从入门到放弃(七)CNN进阶,迁移学习 引入 图像是高维的。即image_length* image_width*image_channels是一个很大的数字,而上一教程里所提到的CNN的权值共享便是一种解决图像和其他领域高维问题的方法。 从上图中可以…

【傻瓜攻略】深度学习之从入门到放弃

从研究生进来之后,一直到现在已经进行了一年关于DP的学习,写篇文章总结一下我蹒跚的学习过程。总结来说是一个从入门学习到几乎想要放弃的过程。顺带列举下面几个坑,希望能帮助一下同样在这条路上行走的旅人们。 1、overfitting这个东西 很…

android异步编程,使用RxAndroid处理异步任务

欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录. Demo Android Rx是响应式编程的意思, 本质是观察者模式, 是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用后台线程, 那么就可以使用这种方式. 目前的异步编程方式都会导…

RxAndroid 入门笔记

参考链接: http://gank.io/post/560e15be2dca930e00da1083#toc_10 https://mcxiaoke.gitbooks.io/rxdocs/content/Observables.html http://blog.chengyunfeng.com/?p948 http://www.apkbus.com/blog-705730-62567.html 要了解RxAndroid,必须先要了解RxJava,应…