一、限速介绍:
限制某个用户在一个给定时间段内能够产生的HTTP请求数,请求可以简单到就是一个对主页的GET请求或者一个登陆表格的post请求
限速可以用在安全目的上,比如暴力密码破解攻击,通过限制进来的请求速率,并且(结合日志)标记出目标URLs来帮助防范DDos攻击
一般地说,限流是用在保护上游应用服务器不被在同一时刻的大量用户请求淹没
二、应用场景
DDoS防御
下载场景保护IO
三、限速原理
“漏桶”
水(请求)从上方倒入水桶,从水桶下方流出(被处理);
来不及流出的水存在水桶中(缓冲),以固定速率流出;
水桶满后水溢出(丢弃)。
这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃。
四、限速实现
nginx官方版本限制IP的连接和并发分别有两个模块:
limit_req_zone 请求限速,用来限制单位时间内的请求数,即速率限制
limit_req_conn 下载限速,用来限制同一时间连接数,即并发限制
limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
limit_req zone=baism burst=5 nodelay;