nginx如何处理TCP/UDP session

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

1 Post-accept 阶段

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

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, server

Syntax: 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值