nginx worker代码包括核心和功能模块。nginx的核心是负责维护一个紧密的运行循环,并在每个请求处理阶段执行模块代码的适当部分。模块构成了大部分表示和应用程序层功能。模块读取和写入网络和存储,转换内容,执行出站过滤,应用服务器端包含操作,并在激活代理时将请求传递给上游服务器。
nginx的模块化架构通常允许开发人员在不修改nginx核心的情况下扩展Web服务器功能集。nginx模块的版本略有不同,即核心模块,事件模块,阶段处理程序,协议,变量处理程序,过滤器,上游和负载平衡器。目前,nginx不支持动态加载的模块; 即,模块在构建阶段与核心一起编译。但是,计划在未来的主要版本中支持可加载模块和ABI。
同时处理各种具有接受,处理和管理网络的连接和内容检索相关联的动作,nginx的使用事件通知机制和许多基于BSD磁盘I /在Linux,Solaris和O性能增强的操作系统,等等kqueue,epoll和event ports。目标是为操作系统提供尽可能多的提示,以获得对入站和出站流量,磁盘操作,读取或写入套接字,超时等的及时异步反馈。多路复用和高级I / O操作的不同方法的使用针对运行nginx的每个基于Unix的操作系统进行了大量优化。
下图给出了nginx架构的高级概述 。
nginx架构图