Рейтинг:0

haproxy выполнение строк после запрета строки http-запроса остановлено или нет?

флаг id

Я очень запутался и не могу найти ответ: что может привести к остановке выполнения строк конфигурации в haproxy или все они будут выполнены и оценены в конце?

У меня сложилось впечатление, что if условное http-запрос отказать [...] сработает, выполнение тут же остановится, но тогда некоторые примеры не имеют никакого смысла.

Пример (из документы):

интерфейс fe_main
   связать :80

   # определить таблицу палочек
   тип палки-таблицы размер IP-адреса 100 КБ срок действия 24 часа хранить http_req_rate (5s), gpc0, gpt0

   # начать отслеживать запросы, где ключ в таблице
   # исходный IP-адрес клиента
   http-запрос track-sc0 src

   # клиент превысил 20 запросов за 5 секунд?
   acl превышает_rate_limit sc_http_req_rate(0) gt 20

   # отметить их, если они превысили лимит
   http-запрос sc-set-gpt0(0) 1, если превышает_rate_limit

   # если они превысили лимит в 3 раза, отметить их как известных спидеров
   acl known_speeder sc_get_gpc0(0) ge 3

   # запретить всех клиентов, которые превышают лимит или известны как спидеры
   http-запрос запрещает deny_status 429, если превышает_rate_limit || известный_спидер

   # считать каждый раз, когда они превышают лимит, если они были помечены
   acl issue_speeding_ticket sc_get_gpt0(0) eq 1
   http-запрос sc-inc-gpc0 (0), если issue_speeding_ticket

   # сбросить флаг
   http-запрос sc-set-gpt0 (0) 0

   default_backend be_servers

Если http-запрос отклонить остановит выполнение (как я и думал), то в двух случаях это не сработает, как предполагалось, верно?

  • Если клиент отправляет устойчивую нагрузку HTTP-запросов, превышающую лимит, acl превышает_rate_limit оценивается как true, поэтому http-запрос отклонить сделает sc-inc-gpc0 линия недоступна, штраф за превышение скорости выписываться не будет.
  • Если клиент превысит ограничение скорости, а затем остановится навсегда, штраф за превышение скорости не будет выдан, поскольку последний запрос был отклонен, как и в предыдущем случае.
  • Если клиент превышает лимит скорости, а затем замедляется, чтобы больше не превышать лимит (и, таким образом, снова ведет себя), будет выписан штраф за превышение скорости. Это противоположно тому, что я ожидал.

Если http-запрос отклонить не останавливает выполнение, то очень неоднозначно, что будет с запросом? Что, если другой http-запрос совпадения строк; выиграет ли последний?

Более общая картина здесь заключается в том, что я пытаюсь выполнить что-то похожее на пример использования.Мне нужна таблица, в которой указано, сколько раз исходный IP-адрес достигал ограничения скорости (но только один раз для поддержания состояния превышения ограничения скорости).

Мне не удалось найти в документации авторитетный источник о порядке выполнения правил в файлах конфигурации haproxy. Возможно, я что-то упускаю.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.