nginx如何处理TCP/UDP会话
客户端的TCP/UDP会话被处理为连续的步骤,称为阶段:
-
Post-accept
- 在接受客户端连接后的第一个阶段。此阶段调用了ngx_stream_realip_module模块。
-
Pre-access
- 对访问进行初步检查。此阶段调用了ngx_stream_limit_conn_module和ngx_stream_set_module模块。
-
Access
- 在实际数据处理之前进行客户端访问限制。此阶段调用了ngx_stream_access_module模块,对于njs,调用了js_access指令。
-
SSL
- TLS/SSL终止。此阶段调用了ngx_stream_ssl_module模块。
-
Preread
- 将初始数据字节读入预读缓冲区,以便诸如ngx_stream_ssl_preread_module分析数据之前进行处理。对于njs,此阶段调用了js_preread指令。
-
Content
- 数据实际处理的强制阶段,通常将数据代理到上游服务器,或将指定值返回给客户端。对于njs,此阶段调用了js_filter指令。
-
Log
- 记录客户端会话处理结果的最终阶段。此阶段调用了ngx_stream_log_module模块。