0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Nginx架构介绍 Nginx服务器模型分析

西西 来源:51CTO 2019-01-10 16:32 次阅读

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

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

1.Nginx的整体架构简介

Nginx架构介绍 Nginx服务器模型分析

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

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

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

2. Nginx的模块化

高度模块化的设计是 Nginx 的架构基础。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架构介绍 Nginx服务器模型分析

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

select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的。

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

Nginx架构介绍 Nginx服务器模型分析

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

Master-Worker交互

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

Worker-Worker交互

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8106

    浏览量

    82485
  • nginx
    +关注

    关注

    0

    文章

    135

    浏览量

    11984
收藏 人收藏

    评论

    相关推荐

    Linux上Nginx获得最佳性能的8种方法

    NGINX 是一种流行的、免费的开源 Web 服务器。默认的 NGINX 配置足以让 Web 服务器正常工作。 但是,如果您想充分利用 NGINX
    发表于 01-16 09:51 446次阅读

    【NanoPi2试用体验】高级(一):基于nginx的web服务器

    /nginx reload在浏览中打开地址192.168.1.222:8080服务器正常!征文活动,多多捧场:https://bbs.elecfans.com/jishu_531047_1_1.html
    发表于 01-03 11:00

    NanoPi NEO - 可靠的Nginx 网络服务器

    服务器部署,并删除匿名用户和测试数据库。#mysql_secure_installation根据提示进行选择:3. 安装nginx如果你之前已经安装了Apache2,则需要先移除apache2
    发表于 06-20 15:43

    Nginx的主要功能

    大数据基础——Nginx服务器基本配置
    发表于 05-31 07:57

    Nginx的安装和启动服务

    Mac上搭建直播服务器 Nginx+rtmp
    发表于 08-05 14:54

    Nginx服务器的搭建步骤

    ①搭建Nginx服务器②SSL加密网站③基于域名虚拟主机
    发表于 04-07 16:20

    请问zabbix怎么使用模版监控nginx服务

    zabbix使用模版监控nginx服务的方法步骤
    发表于 11-04 07:16

    主要学习下nginx的安装配置

    中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多个应用上进行逻辑
    发表于 10-19 14:12

    Apache与Nginx 简单对比 以及Nginx 基本使用方法

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个目前运维必备的工具之一。
    的头像 发表于 01-31 14:42 7983次阅读
    Apache与<b class='flag-5'>Nginx</b> 简单对比  以及<b class='flag-5'>Nginx</b> 基本使用方法

    一文知道Nginx服务器的缓存原理和机制

    Nginx服务器的缓存原理,是在学习过程中比较重要的一个知识点,学习通透之后,对于自己的能力会有不小的提升——而且提升不只限于nginx一方面,技术理论一通百通,对于理解其他内容也会有很大帮助。
    的头像 发表于 10-05 09:01 2216次阅读
    一文知道<b class='flag-5'>Nginx</b><b class='flag-5'>服务器</b>的缓存原理和机制

    分析Nginx为什么快的原因

    Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。本文从底层原理分析 Nginx 为什么这么快!
    的头像 发表于 05-04 14:26 2479次阅读
    <b class='flag-5'>分析</b><b class='flag-5'>Nginx</b>为什么快的原因

    如何彻底搞懂Nginx知识网结构

    1.Nginx知识网结构图 Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页
    的头像 发表于 05-03 14:15 1463次阅读
    如何彻底搞懂<b class='flag-5'>Nginx</b>知识网结构

    详解Nginx高性能的HTTP和反向代理服务器

    Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。
    的头像 发表于 03-16 11:23 2041次阅读

    【技术分享】如何在嵌入式Linux平台上使用Nginx搭建RTMP流媒体服务器

    RTMP作为目前主流的流媒体传输协议,广泛应用于音视频领域。那么我们如何快速在嵌入式板子上搭建起自己的rtmp流媒体服务器?本篇文章将带大家实践一下。概述Nginx是一个以高效稳定著称的高性能
    的头像 发表于 01-13 09:27 678次阅读
    【技术分享】如何在嵌入式Linux平台上使用<b class='flag-5'>Nginx</b>搭建RTMP流媒体<b class='flag-5'>服务器</b>?

    Apache服务器Nginx服务器

    Apache和Nginx都是常见的开源Web服务器软件,它们用于处理HTTP请求并提供网站和应用程序的服务。下面是对Apache和Nginx的一些基本特点的比较: 一、Apache H
    的头像 发表于 01-22 16:48 206次阅读