前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Cookie的Haproxy防止过速请求的方法

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

作者头像
颇忒脱
发布2018-10-19 14:42:23
1.2K0
发布2018-10-19 14:42:23
举报
文章被收录于专栏:颇忒脱的技术博客

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

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

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

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

下面是配置文件样例:

代码语言:javascript
复制
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里启用了如下配置:

代码语言:javascript
复制
stats socket /var/run/haproxy/haproxy.sock mode 0600 level admin

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

代码语言:javascript
复制
echo 'show table http-in' |  sudo socat  /var/run/haproxy/haproxy.sock -

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档