nginx模块化结构

NGINX是一个免费、开源、高性能、轻量级的HTTP和反向代理服务器,也是一个电子邮件(IMAP/POP3)代理服务器

特点:

  占有内存少,并发能力强

Nginx的优点:

  模块化、事件驱动、异步、非阻塞、多进程单线程

1.内部结构

Nginx 的内部结构是由核心部分和一系列的功能模块所组成

  (1) 内核

    提供web服务的基本功能

    通过查找配置文件将客户端请求映射到一个location block,然后将这个location block中所配置的每个指令将会启动不同的模块去完成相应的工作

  (2) 模块

   Nginx的各种功能和操作都由模块来实现

   从结构上分:

核心模块:HTTP模块、EVENT模块和MAIL模块
基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
第三方模块: HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块

  从功能上分:

Handlers(处理器模块):此类模块直接处理请求,并进行输出内容和修改 headers 信息等操作。Handlers 处理器模块一般只能有一个
Filters(过滤器模块):此类模块主要对其他处理器模块输出的内容进行修改操作,最后由 Nginx 输出
Proxies(代理类模块):此类模块是 Nginx 的 HTTP Upstream 之类的模块,这些模块主要与后端一些服务比如FastCGI 等进行交互,实现服务代理和负载均衡等功能

2.模块化设计

模块化设计是nginx的架构基础  

模块化设计使得Nginx方便开发和扩展,功能很强大

但是Nginx的模块默认编译进nginx中,如果需要增加或删除模块,需要重新编译Nginx,不如Apache的动态加载模块方便

补充: 
  如果有需要动态加载模块,可以使用由淘宝网发起的web服务器Tengine(http://tengine.taobao.org/),在nginx的基础上增加了很多高级特性,完全兼容Nginx

3.请求处理

Nginx 将各功能模块组织成一条链,当有请求到达的时候,请求依次经过这条链上的部分或者全部模块,进行处理

每个模块实现特定的功能

一个 HTTP Request 的处理过程:

  初始化 HTTP Request

  处理请求头、处理请求体

  如果有的话,调用与此请求(URL 或者 Location)关联的 handler

  依次调用各 phase handler 进行处理

  输出内容依次经过 filter 模块处理

posted @ 2019-12-17 13:24  慕尘  阅读(710)  评论(0编辑  收藏  举报