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模块 在此阶段被调用。