nginx如何处理TCP/UDP session

来源:互联网 发布:mac将文件夹移动硬盘 编辑:程序博客网 时间:2024/06/06 01:55

nginx会在几个连续的步骤中处理来自client客户端的TCP/UDP session,这些步骤也叫阶段。

1 Post-accept 阶段

这是接收客户端连接后的第一个阶段。在这个阶段 ngx_stream_realip_module插件会被调用。ngx_stream_realip_module插件是用来转换client端地址(address)和端口(port)为PROXY协议header中发送的某一个。
指令:

Syntax: set_real_ip_from address | CIDR | unix:;Default:Context:    stream, server#

2 Pre-access阶段

针对访问的初步检查。在这个阶段 ngx_stream_limit_conn_module插件会被调用。ngx_stream_limit_conn_module插件用来限制定义的每个key的连接数量,实际上这个连接数量是来自单个IP地址的连接数量。
指令:

Syntax: limit_conn zone number;Default:Context:    stream, server#

3 Access阶段

实际数据处理之前client客户端的限制。在这个阶段 ngx_stream_access_module插件会被调用。ngx_stream_access_module插件可以用来限制某些客户端地址的访问。
指令:

Syntax: allow address | CIDR | unix: | all;Default: Context:    stream, serverSyntax: deny address | CIDR | unix: | all;Default: Context:    stream, server

4 SSL阶段

TLS/SSL 处理。在这个阶段 ngx_stream_ssl_module插件会被调用。ngx_stream_ssl_module 提供对使用TLS/SSL协议的stream代理server的必要支持。

5 Preread 阶段

读取数据的初始字节到preread buffer中,在数据被处理之前,允许 ngx_stream_ssl_preread_module等插件分析数据。ngx_stream_ssl_preread_module插件允许在还没有终结SSL/TLS时从ClientHello message中提取信息。比如通过SNI请求的server名称。
指令:

Syntax: ssl_preread on | off;Default:    ssl_preread off;Context:    stream, server

6 Content阶段

数据实际处理的委托阶段,通常被代理到upstream server,或者一个指定的值会被返回到客户端。

Log阶段

最后一个阶段,client session处理的结果会被记录。在这个阶段 ngx_stream_log_module 插件会被调用。ngx_stream_log_module 插件使用指定的格式来写session日志。
指令:

Syntax: access_log path format [buffer=size] [gzip[=level]] [flush=time] [if=condition];access_log off;Default:    access_log off;Context:    stream, server
0 0
原创粉丝点击