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
- 将初始数据字节读入 preread 缓冲区,以便像 ngx_stream_ssl_preread_module 这样的模块在处理数据之前对其进行分析。对于 njs,在此阶段调用 js_preread 指令。
-
Content
- 数据在此阶段被实际处理,是必需阶段,通常被代理到上游服务器,或将指定值返回到客户端。对于 njs,在此阶段调用 js_filter 指令。
-
Log
- 记录客户端会话处理结果的最终阶段。ngx_stream_log_module 模块在此阶段被调用。