历史上的今天
返回首页

历史上的今天

今天是:2025年01月10日(星期五)

正在发生

2019年01月10日 | Nginx架构介绍 Nginx服务器模型分析

2019-01-10 来源:51CTO

Nginx是一款免费的、开源的、高性能、、轻量级的HTTP服务器、反向代理服务器以及邮件(IMAP/POP3)代理服务器。

很多大型的网站都使用Nginx,如:百度、京东、新浪、网易、腾讯、淘宝等。

1.Nginx的整体架构简介

1)Nginx启动后,会产生一个主进程,主进程执行一系列的工作后会产生一个或者多个工作进程;

2)在客户端请求动态站点的过程中,Nginx服务器还涉及和后端服务器的通信。Nginx将接收到的Web请求通过代理转发到后端服务器,由后端服务器进行数据处理和组织;

3)Nginx为了提高对请求的响应效率,降低网络压力,采用了缓存机制,将应答数据缓存到本地。保障对缓存文件的快速访问;

2. Nginx的模块化

高度模块化的设计是 Nginx 的架构基础。Nginx严格遵循“高内聚,低”的原则,将服务器设计为多个模块,每个模块就是一个独立的功能模块,只负责自身的功能。

这5个模块从上到下重要性依次递减。

(1)核心模块

核心模块是Nginx服务器正常运行必不可少的模块,如同操作系统的内核。它提供了Nginx最基本的核心服务。像进程管理、权限控制、错误日志记录等;

(2)标准HTTP模块

标准HTTP模块支持标准的HTTP的功能;

(3)可选HTTP模块

可选HTTP模块主要用于扩展标准的HTTP功能,让Nginx能处理一些特殊的服务;

(4)邮件服务模块

邮件服务模块主要用于支持Nginx的邮件服务;

(5)第三方模块

第三方模块是为了扩展Nginx服务器应用,完成开发者想要的功能;

3.Nginx的Web请求处理机制

从架构设计上说,Nginx服务器是与众不同的。其一在于它的模块化设计;其二也是更重要的一点在于它对与客户端请求的处理机制上。 Nginx请求处理机制结合多进程机制和异步非阻塞机制。

1)多进程

多进程方式指服务器每当收到一个客户端请求时就由服务器主进程生成一个子进程出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。多进程方式的优点是设计简单,各个子进程相对独立,处理客户端请求时彼此不受干扰;缺点是操作系统生成一个子进程需要进行内存复制等操作,在资源和时间上会产生一定的开销;当有大量请求时,会导致系统性能下降;

2)异步非阻塞

发送方向接收方发送请求后,不用等待响应,可以继续其他工作;接收方处理请求时进行的IO操作如果不能马上得到结果,也不必等待,而是马上返回去去做其他事情。当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。

4. Nginx服务器的事件驱动模型

从上面我们可以知道,Nginx服务器的工作进程调用IO后,就取进行其他工作了;当IO调用返回后,会主动通知工作进程。像select/poll/epoll等这样的系统调用就是用来支持这种解决方案的。这些系统调用也常被称为事件驱动模型,他们提供了一种机制就只让进程同时处理多个并发请求,不用关心IO调用的具体状态。IO调用完全由事件驱动模型来管理。

如上图所示,Nginx的事件驱动模型由事件收集器、事件发送器和事件处理器三部分基本单元组成。

5. Nginx服务器Master-Worker进程处理模型

Nginx服务器在使用Master-Worker模型时,会涉及到主进程和工作进程的交互和工作进程之间的交互。这两类交互都依赖于管道机制。

Master-Worker交互

这条管道与普通的管道不同,它是由主进程指向工作进程的单向管道,包含主进程向工作进程发出的指令,工作进程ID等;同时主进程与外界通过信号通信;

Worker-Worker交互

这种交互是和Master-Worker交互是基本一致的,但是会通过主进程。工作进程之间是相互隔离的,所以当工作进程W1需要向工作进程W2发指令时,首先找到W2的进程ID,然后将正确的指令写入指向W2的通道。W2收到信号采取相应的措施。

通过这篇文章,我们对Nginx服务器的整体架构有了一个整体的认识。另外推荐大家多看看Nginx的源码,以便能更好地领悟 Nginx的设计思想。

推荐阅读

史海拾趣

Amphenol Nexus公司的发展小趣事

2008年,Amphenol公司看中了Nexus, Inc.在连接器领域的潜力,决定对其进行收购。收购完成后,Amphenol成立了提供全球销售支持的Amphenol Nexus Technologies,同时仍保持了对客户支持和开发的坚定承诺。这一举措使Amphenol Nexus Technologies得以借助Amphenol的全球性的资源和网络,进一步拓展其业务范围和市场影响力。

CDIL[Continental Device India Pvt. Ltd.]公司的发展小趣事

CDIL采用无晶圆厂模式生产分立半导体器件,专注于功率半导体和高可靠性组件的研发与生产。这一模式使CDIL能够更加灵活地应对市场变化,降低生产成本,提高产品竞争力。同时,公司还采用自己的封装技术,确保产品能够满足太空应用等严苛环境的严格标准。

Holy Stone公司的发展小趣事

经过多年的发展,Holy Stone成为国内少数涵盖主、被动双通路并拥有制造工厂的多元化公司。公司不仅代理多家国际知名半导体零组件,还通过自主研发和生产,为客户提供完整的解决方案及多样性零组件。这一双通路战略使得Holy Stone能够在激烈的市场竞争中保持领先地位,并成功实现全球布局。公司的产品广泛应用于消费电子、汽车电子等多个领域,满足了全球客户的多样化需求。

ESPROS [Espros Photonics corp]公司的发展小趣事

ESPROS在飞行时间(Time-of-Flight,简称ToF)技术领域取得了显著突破。ToF技术是一种用于测量光在物体上反射所需时间的测距技术,它在3D视觉应用中具有广泛的应用前景。ESPROS凭借其多年的技术积累,成功开发出从单点传感器到QVGA面阵的完整ToF产品线,为客户提供了全方位的3D ToF解决方案。

ECS公司的发展小趣事

为了进一步扩大市场份额,ECS公司开始积极拓展全球市场。他们与全球各地的云服务提供商建立了紧密的合作关系,共同为客户提供更加全面、便捷的服务。同时,ECS公司还积极参加国际云计算展会和论坛,与国际同行交流经验和技术,不断提升自身的竞争力。通过这些努力,ECS公司的品牌知名度和市场份额得到了显著提升。

Ampire Co Ltd公司的发展小趣事

随着云计算技术的不断发展,ECS公司意识到只有不断创新才能保持竞争优势。他们投入大量研发资源,对ECS服务进行了多次技术升级和产品优化。例如,他们引入了智能调度算法,实现了计算资源的自动分配和负载均衡;同时,他们还加强了数据安全性和隐私保护措施,确保客户的数据安全。这些技术突破和产品升级使得ECS公司的服务更加稳定、可靠和高效。

问答坊 | AI 解惑

四电压比较器LM339的8个典型应用例子

LM339集成块内部装有四个独立的电压比较器,该电压比较器的特点是:1)失调电压小,典型值为2mV;2)电源电压范围宽,单电源为2-36V,双电源电压为±1V-±18V;3)对比较信号源的内阻限制较宽;4)共模范围很大,为0~(Ucc-1.5V)Vo;5)差动输入电 ...…

查看全部问答>

请问tcl语言中如何将内容打印到文件啊,如内文例子。

请问tcl语言中如何将内容打印到文件啊,比如下面这句:puts [ format \"%40s%13s%13s%13s\"\"name\" \"num\" \"code\" \"com\"]在modelsim中执行后会在modelsim命令窗口打印相应字符,如果想把这些打印到文件中,该用什么命令呢。刚开始学习tcl,还 ...…

查看全部问答>

找ise foundation 10.1 的开发软件

我现在找了很久ise foundation 10.1或webpack的开发软件,有谁有的可以给我提供以下吗,我在学校,去xilinx网站下要花很大的流量,下不起,图书馆借了个光盘也不能用,哪位好心人能帮我一下,感激涕零啊!邮箱:ffxsppan@163.com…

查看全部问答>

modbus协议地址问题

PC对PLC通过MODBUS协议通讯时 给出的映射表是这样的 H0000      P区域 H1000      M区域 H2000      L区域 H3000      K区域 现在我要对一个M1900(已经 ...…

查看全部问答>

老板红了眼,再没结果我就要牺牲了!PDA上UDP通信问题,请各路高手帮忙看,小弟感激涕零

目前的模块,PDA跟单片机的通信。 1,在EVC4下编的代码,通过PC2003模拟通信没有问题,收发数正常 但是release到PDA上,只能广播或者针对某几个IP能发数,也就是用抓包工具能查到数据 但是,仅仅是能发出数据,对方没有响应,而在模拟器上,没有 ...…

查看全部问答>

evc4.0下怎么做才能读和写 csv文件,在线等

evc4.0下怎么做才能读和写 csv文件,我想把它考到pc机上去。…

查看全部问答>

开关电源 负载调整率

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 …

查看全部问答>

LaunchPad能烧写二进制文件么?怎么操作?用CCS

LaunchPad能烧写二进制文件么?怎么操作?用CCS…

查看全部问答>

2013全国电子大赛电源类过电流保护电路

本帖最后由 paulhyde 于 2014-9-15 03:19 编辑 希望参加比赛的朋友一起进来,能把自己的经验分享一下,大家共同进步    …

查看全部问答>

基于瑞萨RL78G14的便携心率仪创意进度帖-3、扩展板原理图,附原文件

最近断断续续的看资料,找脚位,主要是各种模块接口的,既要和官方板子兼容,又要保证以后好布线,那个踌躇啊 扩展板主要用到定时器IO,按键触发,Buzzer输出,SPI接口,计划引出一路串口和一路IIC接口,AD口看情况在考虑下 不得不说,瑞萨的IC端 ...…

查看全部问答>