Nginx 的模块化体系结构
来源:互联网 发布:韩寒与郭敬明知乎 编辑:程序博客网 时间:2024/05/29 12:21
Nginx 的内部结构是由核心部分和一系列的功能模块所组成。这样划分是为了使得每个模块的功能相对简单,便于开发,同时也便于对系统进行功能扩展。为了便于描述,下文中我们将使用 Nginx core 来称呼 Nginx 的核心功能部分。
Nginx 提供了 Web 服务器的基础功能,同时提供了 Web 服务反向代理,Email 服务反向代理功能。Nginx core实现了底层的通讯协议,为其他模块和 Nginx 进程构建了基本的运行时环境,并且构建了其他各模块的协作基础。除此之外,或者说大部分与协议相关的,或者应用相关的功能都是在这些模块中所实现的。
模块概述
Nginx 将各功能模块组织成一条链,当有请求到达的时候,请求依次经过这条链上的部分或者全部模块,进行处理。每个模块实现特定的功能。例如,实现对请求解压缩的模块,实现 SSI 的模块,实现与上游服务器进行通讯的模块,实现与 FastCGI 服务进行通讯的模块。
有两个模块比较特殊,他们居于 Nginx core 和各功能模块的中间。这两个模块就是 http 模块和 mail 模块。这 2 个模块在 Nginx core 之上实现了另外一层抽象,处理与 HTTP 协议和 Email 相关协议(SMTP/POP3/IMAP)有关的事件,并且确保这些事件能被以正确的顺序调用其他的一些功能模块。
目前 HTTP 协议是被实现在 http 模块中的,但是有可能将来被剥离到一个单独的模块中,以扩展 Nginx 支持 SPDY 协议。
模块的分类
Nginx 的模块根据其功能基本上可以分为以下几种类型:
event module: 搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括 ngx_events_module, ngx_event_core_module和ngx_epoll_module 等。Nginx 具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。
phase handler: 此类型的模块也被直接称为 handler 模块。主要负责处理客户端请求并产生待响应内容,比如 ngx_http_static_module 模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。
output filter: 也称为 filter 模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有 html 页面增加预定义的 footbar 一类的工作,或者对输出的图片的 URL 进行替换之类的工作。
upstream: upstream 模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream 模块是一种特殊的 handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
- load-balancer: 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。
- nginx的模块化体系结构
- nginx的模块化体系结构
- Nginx 的模块化体系结构
- Nginx的模块化体系介绍
- nginx源码阅读(七).nginx的模块化设计
- nginx模块化分析
- 【Nginx】模块化设计
- nginx源码模块化结构
- 一深入理解Nginx的 模块化 ,全局观
- 三:深入理解Nginx的模块化 (结合源码详解)
- Nginx系列(二)--模块化
- 软件体系结构:二维分层、模块化和开放平台
- 软件体系结构:二维分层、模块化和开放平台
- nginx与tomcat整合及其他模块化
- nginx源码分析6-模块化(1)
- Nginx服务器架构初探---模块化设计
- 模块化编程与模块化编辑器的设想
- 程序模块化的思考
- SSH反向连接及Autossh
- Python读取中文路径时的处理
- window 7 平台上 MXNET 源码编译
- 解决Linux关闭终端(关闭SSH等)后运行的程序自动停止
- 关于HTML页面中JS/JQ/Onload执行顺序测试代码
- Nginx 的模块化体系结构
- 线程池
- 针对jqPaginator跨域请求数据无法同步问题
- Python之urllib.request模块
- yum安装最新的MySQL 5.7
- Ubuntu环境下QtCreator导入帮助文档
- “精灵学院”正式开课!老司机带你领略容器编排的魅力
- Spring JMS和ActiveMQ集成
- smtp发送邮件源码