nginx中的限速分为
- 限流量(limit_rate)、
- 限数量(limit_req)、
- 限连接(limit_conn)
配置
Limit_rate 限制的是某个请求的response速率。不同请求间的response速率不受影响。
配置方法:https://github.com/zongzw-learn/learn-nginx/blob/main/limit/limit_rate.yaml
Limit_req 限制特定相同条件(同一个源地址、服务器地址等等)下的请求数量。
配置方法:https://github.com/zongzw-learn/learn-nginx/blob/main/limit/limit_req.yaml
Limit_conn 限制特定相同条件(同一个源地址、服务器地址等等)下的并发连接数。
配置方法:https://github.com/zongzw-learn/learn-nginx/blob/main/limit/limit_conn.yaml
原理
- 采用漏桶算法实现流量限制 limit_rate。突发流量被缓存起来,excessive 流量则被丢弃掉。
- 采用令牌桶算法实现请求限制 limit_req。突发请求burst部分被延迟,更多的部分被丢弃。
- 使用红黑树的方式维持了特定条件下的conn信息,通过检索这些条件下的连接数,并比较,实现对单位时间内并发连接的限制,代码位置:src/http/modules/ngx_http_limit_conn_module.c:ngx_http_limit_conn_handler
注意
return指令不受limit_req 限制.
标签:req,限速,nginx,rate,limit,learn,conn From: https://www.cnblogs.com/zongzw/p/18240739