我有客户可以访问的以下URL。
/AnEndPoint?User=<user_emailid>&DeviceId=<device_id>
我想根据User + DeviceId组合对用户进行分级。
例如,一个具有DeviceId 123的用户A发出的请求数/秒以上应添加到存储卡表中,并且进一步的请求被拒绝
我在这里看到https://cbonte.github.io/haproxy-dconv/1.6/configuration.html#7.3.6-url_param
我这里有一些在Deviceid上工作的示例配置,如何将其扩展为还存储useremail + Deviceid并仅在这些ID上进行阻止。
frontend frontend1
http-request set-var(txn.email) urlp(User)
http-request set-var(txn.deviceid) urlp(DeviceId)
http-request deny if { var(txn.deviceid),table_http_req_rate(Abuse) ge 10 }
http-request track-sc0 var(txn.deviceid) table Abuse
backend somebackend
stick store-request var(txn.deviceid) table Abuse #ONLY STORING DEVICEID ,HOW TO STORE EMAIL WITH IT TOO?
backend Abuse
stick-table type string size 100K expire 30m store http_req_rate(10s)
我在理解如何插入和增加每个请求的查询字符串在stick table中生成的值时遇到问题。
答案 0 :(得分:0)
最终这样做了。
backend Backend1
http-request set-header UserInfo %[urlp(User)]%[urlp(DeviceId)]
stick store-request hdr(UserInfo) table Abuse
http-request track-sc0 hdr(UserInfo) table Abuse
http-request deny if { hdr(UserInfo),table_http_req_rate(Abuse) ge 5 }