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 限制.
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...