透过现象看本质——Nginx模块

透过现象看本质——Nginx模块

前言

? 上篇文章主要讲述了有关Nginx的主配置文件,为什么需要非常关注Nginx的主配置文件呢?这是因为它是我们与nginx的核心,这里的核心不是说nginx的内核部分,而是人机交互的核心,除非基于nginx做二次开发,例如开发第三方模块,一般我们只需要使用nginx实现我们的业务需求。无论是web网站、负载均衡还是反向代理,都需要对其主配置文件熟悉,这样才能玩好其优化。

? 本文就接着来讲述有关nginx模块的相关内容。

Nginx核心工作者——模块

? Nginx由内核和各种模块组成。Nginx本身的工作实际很少,当它响应一个HTTP请求时,是通过配置文件将请求映射到一个location block,根据定位中所配置的各个指令启动不同的模块完成工作,所以这就是为什么说模块是Nginx的核心工作者。

? 当然,Nginx的核心部分也不可以忽略,因为它实现了底层的通讯协议,为其他模块和Nginx进程构建了基本的运行时环境,且构建了其他模块之间的协作的基础。

? 一般一个location中的指令会涉及一个handler模块和多个filter模块(多个location可以复用同一个模块)。handler模块负责处理请求,完成响应内容的生成,而filter模块对响应内容进行处理。用户根据自己的需要所二次开发的模块都是第三方模块。这也是nignx功能可以如此强大而经久不衰的主要原因。

1、Nginx模块概述

? 首先,模块和功能对应,一般一个模块对应一个或多个功能(一般不会很多,而且同一个模块中,功能类似,可以类比面向对象编程中的重载)。其实这样的做法也是人性化的体现,一方面支持模块扩展,一方面便于开发和维护。这也是解耦思想的应用之一。

? 那究竟什么是Nginx模块呢?

? 模块可以简单理解为一个个封装好的函数,每个函数实现一个或几个类似的功能,Nginx将这些功能模块组织为一个链,用来应对请求。当一个请求到达的时候,会依次经过这条链上的部分或全部功能模块,进行处理。实现的功能例如:实现对请求解压缩的模块,实现 SSI 的模块,实现与上游服务器进行通讯的模块,实现与 FastCGI 服务进行通讯的模块。

? 比较特殊的两个模块分别是http模块和mail模块,它们两个居于核心功能部分和各个功能模块之间,从而处理与HTTP协议和email协议有关的事件,同时确保这些事件被以正确的顺序调用其他的一些功能模块。

2、Nginx模块分类

(1)、Nginx的模块基于其结构分为核心模块、基础模块和第三方模块

核心模块

? 由HTTP模块、EVENT模块和MAIL模块构成。

基础模块

? 由HTTP Access 模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite 模块构成。

第三方模块

? 由HTTP Upstream Request Hash模块、Notice 模块和 HTTP Access Key模块构成。

(2)、Nginx的模块基于其功能分为Handlers模块、Filters模块和Proxies模块

Handlers

? Nginx的处理器模块——直接处理请求,并且进行输出内容和修改headers信息等操作,一般情况下Handlers处理器模块只能有一个。

? Handlers 模块处理的结果通常有三种情况: 处理成功,处理失败(处理的时候发生了错误)或者是拒绝处理。在拒绝处理的情况下,这个 location 的处理就会由默认的 handler 模块来进行处理。例如,当请求一个静态文件的时候,如果关联到这个 location 上的一个 handler 模块拒绝处理,就会由默认的 ngx_http_static_module 模块进行处理,该模块是一个典型的 handler 模块。

Filters

? Nginx的过滤器模块——主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。它的处理时间在获取回复内容之后,向用户发送响应之前。它的处理过程分为两个阶段,过滤 HTTP 回复的头部和主体,在这两个阶段可以分别对头部和主体进行修改。

Proxies

? Nginx的代理类模块——类似于HTTP Upstream 的模块,这类模块主要与后端一些服务如Fastcgi等进行交互,实现服务代理和负载均衡(load-balancer)等功能。upstream 这类的模块将使得Nginx跨越单机完成网络数据的接收、处理和转发。这也是在云时代,Nginx可以作为有能力的中间件(做转发)的关键网络应用组件。

? 负载均衡模块用于从upstream指令定义的后端主机列表中选取一台主机。Nginx 先使用负载均衡模块找到一台主机,再使用 upstream 模块实现与这台主机的交互。

这三类功能模块也是基本上作为第三方开发者最可能开发的三种类型的模块

原文地址:https://blog.51cto.com/14557673/2484131

时间: 2024-09-30 00:11:54

透过现象看本质——Nginx模块的相关文章

透过现象看本质——回头再看Nginx(进程模型、异步非阻塞、源码目录结构)

透过现象看本质--回头再看Nginx Nginx的进程模型 ? 使用过nginx的朋友都知道nginx的性能很高,而其原因可能少有人知.首先,nginx的架构就奠定了其高性能的基础.那么就先来看看nginx的基础架构吧,如下图所示:(不能完全理清楚所有内容也没关系,因为本小节讲述的主要内容是Nginx的进程模型) ? 本小节先来说说Nginx基础架构中的进程模型: ? 所谓进程模型,即Nginx响应请求或服务时程序运行(机器执行指令集)的方式,一般在nginx服务启动后,在Unix系统中会以da

透过现象看本质——谈谈ML2 plugin这回事儿

透过现象看本质--谈谈ML2 plugin这回事儿 本文关键词:OpenStack.Neutron Plugin.Neutron Agent.Core Plugin.ML2插件.ML2架构.Driver.紧耦.解耦. 前言 ? 在OpenStack中,其控制管理着计算.存储.网络三大资源.要想明白OpenStack是如果对计算.存储和网络资源进行管理的,就需要清楚OpenStack的架构,模块组成和各自分工的任务等等. ? 而网络是作为OpenStack中最为核心之一的.也是相对于其他最为复杂的

通过现象看本质——Nginx配置文件详解

通过现象看本质--Nginx配置文件详解 前言 ? 前面的文章讲述了有关Nginx进程模型以及基于异步非阻塞机制使得Nginx支持高并发的一些内容.本文将详述有关Nginx的配置文件(主配置文件nginx.conf文件)以及Nginx的体系结构. Nginx配置文件概述 ? 在我们解压后的Nginx目录中的conf目录下就是有关Nginx的配置文件,当然一般我们玩儿的主要是Nginx的配置文件多一点,而其他的配置文件均是纯文本文件.那么本小节就其中的主要配置作解释与介绍. ? 当然,在介绍之前,

透过现象看本质 大数据核心并不在规模大

透过现象看本质 大数据核心并不在规模大谆籽做谞谞诅资祝仔渍庄昨赚缀阻透过现象看本质 大数据核心并不在规模大 http://www.songtaste.com/user/10226369/info http://www.songtaste.com/user/10226373/info http://www.songtaste.com/user/10226374/info http://www.songtaste.com/user/10226382/info http://www.songtaste

透过现象看本质,工业4.0将如何落地

从最终目的上来说,工业4.0与人类历史上的前三次工业革命(或者说工业1.0.2.0和3.0)一脉相承,有一个共同的主题--提高生产效率.而工业4.0与前三者的不同之处,则可用两个词来概括:"互联"与"融合". 在工业4.0所描绘的未来情景中,人.设备和产品将通过互联技术实现融合,在企业内部实现人与人.人与机.机与产品的无缝对接,在组织层面实现企业与企业.企业与消费者的对接.以物理信息系统(CPS)为基础,实现信息技术与制造技术深度融合,使产品设计过程.制造过程.服务

权力社会? 金钱社会? 透过现象看本质-让权力和金钱的力量沿着制度的河道流淌,才是社会稳定的基石

为什么在中国乃至亚洲大部分国家都是 权力社会? 为什么在中国有权就有钱,有钱无权的都要寻求权力保护伞? 为什么在西方欧洲国家大部分是 金钱社会? 仔细感悟觉得 这跟国家历史有很大的关系. 在中国 经历了5000年的封建社会王权统治, 封建社会的核心就是 权力社会, 金钱依附于权力. 而西方国家 经历的最长的反而是 资本主义社会, 资本主义社会的核心是 金钱社会, 权力围绕金钱运转. 从1911年中国推翻最后一个封建王朝-清朝, 到现在不过短短100多年的时间,虽然号称是社会主义社会, 但是由于没

【管理心得之八】通过现象看本质,小王和小张谁更胜任?

一.场景再现======================会议主持者  :接下来,我们讨论一下产品经理一职人选问题.              现有两个候选人(小王.小张),简历.工作表现在你们手中,谈谈各自看法.于经理      :小王不错.以前是我部下,任劳任怨,加班加点更是家常便饭.肯专研.有韧劲.关经理       :是呀,每次项目组最后一个走的都是小王.对工作的认真劲.负责任样令人钦佩.刘经理       :小张平时正点上班.下班,但总能规定时间内保质保量地完成任务.         

通过现象看本质

有时候无所适从的时候,先不管具体实现过程,通过现象,看到什么,然后才分析具体实现过程.

为了可持续的测试自动化,透过表面看本质(译)

当提到可接受的测试自动化,最重要的一步是在适当的位置有一个适当的测试自动化团队框架.这篇文章对一些不同的自动化测试适用场景有一些已证明的项目——由一个自动化或者回归团队主导,以敏捷的适应性——帮助组织享受长期的测试自动化的成功. 公司发起一项新的测试自动化倡议——任何销售人员设计销售相关的工具——倾向认为他们的成功取决于完美的上线.作为一个测试自动化顾问,我喜欢提供一个真实的基于我在领域里所见的检查.如果你没有准备好,最初的上线可能是坎坷崎岖的路,但是在长期中,那不是要制造而是破坏你的测试自动化