HAProxy предоставляет встроенный счетчик http_err_rate
, который «сообщает о средней частоте ошибок HTTP-запросов за этот период». Это можно использовать в таблице привязки для ограничения скорости клиентов, которые генерируют много ошибок. Это может выглядеть примерно так:
frontend web
tcp-request content reject if { src_get_gpc0(Abuse) gt 0 }
acl scanner src_http_err_rate(Abuse) ge 10
http-request deny if scanner flag_abuser
backend Abuse
stick-table type ip size 1m expire 60m store gpc0,http_err_rate(20s)
То, что я хотел бы сделать, это отслеживать что-то вроде http_err_rate
, но только для 401 Unauthorized
кодов состояния. Таким образом, HAProxy будет заниматься только неавторизованными запросами, ограничивающими скорость, а не всеми кодами ошибок HTTP.
Спасибо!