Как сформировать таблицу флешек на основе параметра url в Haproxy - PullRequest
0 голосов
/ 24 июня 2019

У меня есть следующий URL-адрес, по которому клиент может нажать.

/AnEndPoint?User=<user_emailid>&DeviceId=<device_id>

Я хочу ограничить количество пользователей на основе комбинации «Пользователь + DeviceId».

Для пользователя «A» с DeviceId 123делает больше x запросов / сек. необходимо добавить в таблицу флешек и дальнейший запрос отклонен

Я вижу здесь кое-что https://cbonte.github.io/haproxy-dconv/1.6/configuration.html#7.3.6-url_param

У меня есть пример конфигурации, который работает на Deviceid, как можноразверните это, чтобы также хранить useremail + Deviceid и блокировать только их.

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)

У меня возникла проблема с пониманием того, как я могу вставить и увеличить значение, сгенерированное строкой запроса каждого запроса, в таблице флешки.

1 Ответ

0 голосов
/ 26 июня 2019

Закончилось этим.

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 }
...