Nginx学习笔记(六)限流

网友投稿 778 2022-10-06

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Nginx学习笔记(六)限流

在某些情况下需要对请求进行限制,这里表达的或许不太清楚,大概得意思就是限流。之前我们说过限速的配置,主要是对用户请求的速度限制。而这里的限流则是对访问者的限制。前者是响应的限制,后者是请求的限制。那么限流的配置具体怎么做,这块作者还是找到了相关的资料。然后一起学习一下。

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

limt_req_zone定义在http模块中,$binary_remote_addr表示保存用户ip地址用二进制形式,Zone表示定义区域的名称,冒号后边的表示ip空间的存储大小。16000个ip地址信息大概为1M,所以这里10M能存储16万的用户ip地址信息。rate表示请求的速率,这里为每秒10个请求。

之后我们需要在我们的想要限流的路由配置中加入如下配置

limit_req zone=mylimit burst=20 nodelay;

这里的burst表示排队大小,nodelay表示不限制单个请求的时间限制。

通过实际检测发现,配置有效。

当然有时候,我们只需要对必要的用户限流,所以白名单是很重要的限流配置。那么不限流地址又如何配置。

#定义限流配置

geo $limit { default 1;192.168.21.0/24 0;}

#将限流地址配置映射到limit_key中

map $limit $limit_key {1 $binary_remote_addr;0 “”;}

#定义限流。

limit_req_zone $limit_key zone=mylimit:10m rate 1r/s;

在需要配置的请求中设置限流

limit_req zone=mylimit burst=1 nodelay;

通过实践,发现限流的白名单效果良好。非白名单的中用户请求速率明显变慢。

上一篇:k8s自动化运维五-搭建共享文件存储
下一篇:CBO 查询转换(2):反结合的NULL识别机能(null aware anti-join )
相关文章

 发表评论

暂时没有评论,来抢沙发吧~