
上QQ阅读APP看书,第一时间看更新
1.2.2 工作流机制
Nginx在处理客户端请求时,每个连接仅由一个进程进行处理,每个请求仅运行在一个工作流中,工作流被划分为多个阶段(见图1-4),请求在不同阶段由功能模块进行数据处理,处理结果异常或结束则将结果返回客户端,否则将进入下一阶段。工作进程维护工作流的执行,并通过工作流的状态推动工作流完成请求操作的闭环。
图1-4所示为HTTP请求阶段的工作流。
HTTP消息头包括请求头和响应头。

图1-3 异步非阻塞机制

图1-4 Nginx工作流
1.HTTP请求处理阶段
HTTP请求的处理过程可分为11个阶段,HTTP请求处理阶段如表1-2所示。
表1-2 HTTP请求处理阶段

HTTP请求处理阶段可以让每个模块仅在该阶段独立完成该阶段可实现的功能,而整个HTTP请求则是由多个功能模块共同处理完成的。
2.TCP/UDP处理阶段
TCP/UDP会话一共会经历7个处理阶段,每个TCP/UDP会话会自上而下地按照7个阶段进行流转处理,每个处理阶段的说明如表1-3所示。
表1-3 TCP/UDP处理阶段


Nginx功能模块就是根据不同的功能目的,按照模块开发的加载约定嵌入不同的处理阶段的。