Nginx 如何处理 TCP/UDP 会话

来自客户端的 TCP/UDP 会话会按顺序经过称为阶段的步骤进行处理

Post-accept(接受后)
接受客户端连接后的第一个阶段。在此阶段会调用 ngx_stream_realip_module 模块。
Pre-access(访问前)
初步的访问检查。在此阶段会调用 ngx_stream_limit_conn_modulengx_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 模块。