INTEGRITY Документация

Устранение неполадок правил rate limiting

Некоторые подзапросы Workers учитываются как отдельные запросы

Cloudflare может учитывать подзапросы Workers в той же зоне как отдельные запросы, из-за чего правило rate limiting сработает раньше, чем ожидалось. Такое поведение возникает, когда правило rate limiting настроено с Также применять rate limiting к кешированным ресурсам со значением false.

Чтобы предотвратить такое поведение, исключите из правила rate limiting все подзапросы Workers из той же зоны, используя cf.worker.upstream_zone (поле). Например, вы можете добавить следующее подвыражение в ваше выражение правила rate limiting:

and (cf.worker.upstream_zone == "" or cf.worker.upstream_zone != "<YOUR_ZONE>")

Первое условие (проверка на пустую строку) будет соответствовать прямым запросам посетителей, а второе — подзапросам, исходящим не из вашей зоны, фактически исключая подзапросы из той же зоны из-под действия правила rate limiting.

Правила rate limiting с условиями по имени хоста и Origin Rules

Если вы используете Origin Rules , чтобы переписать Host, а ваше правило rate limiting включает http.host в выражении или характеристиках подсчёта, правило может совпадать с входящими запросами, но не увеличивать свой счётчик.

Это происходит потому, что выражение правила rate limiting оценивается в две фазы:

  1. Фаза запроса (сопоставление правила): выражение вычисляется по исходному запросу, где http.host содержит исходное имя хоста. Правило срабатывает, как ожидается.
  2. Фаза ответа (увеличение счётчика): если правило использует выражение подсчёта или имеет Также применять rate limiting к кешированным ресурсам выключен, увеличение счётчика происходит после ответа. К этому моменту Origin Rules уже переписали Host (заголовок) на новое значение, поэтому выражение с исходным именем хоста больше не срабатывает.

В результате правило совпадает с запросами, но счётчик никогда не увеличивается, и лимит частоты никогда не применяется.

Решение

Чтобы это исправить, выполните одно из следующего:

Поведение fail-open в rate limiting

Правила rate limiting Cloudflare работают в режиме режим fail-open (пропуская запросы, а не блокируя их) при перегрузке инфраструктуры. Когда базовая инфраструктура испытывает высокую нагрузку, Cloudflare может пропускать обновление счётчиков частоты и применение ограничений для затронутых запросов вместо блокировки легитимного трафика.

Видимого для клиента сигнала о событиях fail-open нет. Если правило rate limiting не блокирует трафик, который должно перехватывать (ложноотрицательный результат), а конфигурация правила корректна, причиной может быть нагрузка на инфраструктуру в затронутом дата-центре.

Подсчёт по дата-центрам: Счётчики rate limiting ведутся отдельно для каждого дата-центра Cloudflare. Если трафик распределён между многими дата-центрами, частота в каждом отдельном дата-центре может оставаться ниже порогового значения, даже когда суммарная частота его превышает. Учитывайте это при настройке пороговых значений для глобально распределённого трафика.