专栏首页颇忒脱的技术博客基于Cookie的Haproxy防止过速请求的方法

基于Cookie的Haproxy防止过速请求的方法

在网上找一些关于Haproxy对于过速防御的解决办法,大致上就找到两种:

  1. 对于整体请求速度的控制
  2. 对于某个IP的请求速度的控制

这两种方式都不太好,第一种太过粗粒度,第二种容易误伤(如果多个客户端从同一台路由设备过来)。

设想一种基于Cookie的防御方法,因为Cookie里有记录SESSIONID这样的数据,如果针对SESSIONID进行过速请求防御,那么粒度就足够精细了。

下面是配置文件样例:

frontend http-in
  
  ...    
  # 创建stick-table,记录 cookie value -> 最近30秒内http请求次数
  stick-table type string len 50 size 1m expire 10m store http_req_rate(30s)
  
  # 将cookie(SESSION)作为key,存到stick-table中,并且计数
  http-request track-sc0 req.cook(SESSION)
  
  # 定义ACL,请求次数是否超过100
  acl abuse sc0_http_req_rate gt 100
  
  # 如果ACL为true,则拒绝http请求,响应429
  http-request deny deny_status 429 if abuse

如果你在haproxy里启用了如下配置:

stats socket /var/run/haproxy/haproxy.sock mode 0600 level admin

那么可以通过Socket Command在Haproxy运行时查看stick-table中的数据:

echo 'show table http-in' |  sudo socat  /var/run/haproxy/haproxy.sock -

参考资料

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 多种认证、授权模型的比较

    本文主要列举在如今前后端分离、手机App大行其道的现状下,用户认证、授权的几种做法及对比。

    颇忒脱
  • Elasticsearch中将Doc根据A字段排序获得第一个Doc的B字段值的方法

    最近遇到这样一个需求,要通过Elasticsearch将Doc根据A字段降序,然后获得B字段的值,最终根据B字段的值再去做Pipeline Aggregatio...

    颇忒脱
  • 处理Empty Mono的方法

    在Reactor编程中有时候我们需要对empty Mono<T>做一些特定业务逻辑。下面看一段非reactor编程的代码:

    颇忒脱
  • Spring中使用的设计模式

      Spring框架是每个java程序猿入门级的框架也是最重要的框架,而Spring中也采用了很多的设计模式,这些也会成为我们面试过程中经常会问到的问题,所以本...

    用户4919348
  • Asp.Net MVC4入门指南(5):从控制器访问数据模型

    在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里。 在开...

    葡萄城控件
  • 大数据上市企业财报分析:亿玛在线

    <数据猿导读> 2015年,亿玛在线实现营业总收入为66342.6万元,同比增45.24%;有机构预测2016年亿玛在线的营收规模将超过10亿元,但从刚公布的上...

    数据猿
  • Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865

    zhangrelay
  • 无监督前景分割预测

    用户1908973
  • “挑三拣四”地学一学Java I/O

    古人云:“读书破万卷,下笔如有神”。也就是说,只有大量的阅读,写作的时候才能风生水起——写作意味着输出(我的知识传播给他人),而读书意味着输入(从他人的知识中汲...

    沉默王二
  • 【Flutter Widgets大全】电子书开源

    【Flutter Widgets 大全】 为 Flutter 老孟 网站项目,共收录 330 多个 Widgets,此电子书并不适合入门(一个一个组件学习),适...

    老孟Flutter

扫码关注云+社区

领取腾讯云代金券