nginx中的限速

随笔1个月前发布 肥宅薛定谔
3 0 0

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 限制.

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...