← Cloudflare Waiting Room / waiting-room / additional-options / waiting-room-rules
Правила обхода Waiting Room
Waiting Room Bypass Rule представляет собой тип Waiting Room Rule, построенный на Cloudflare Ruleset Engine и управляемый через Waiting Room API. С его помощью можно указать конкретный трафик или разделы вашего сайта или приложения, на которые не должен распространяться зал ожидания. Каждое правило обхода создается и настраивается на уровне отдельного зала ожидания, что обеспечивает точный контроль над его трафиком.
Чтобы указать, где должны применяться правила обхода, напишите пользовательская логика с помощью поля доступных через Cloudflare Ruleset Engine, за исключением следующих:
cf.threat_scoreи поля, начинающиеся сcf.bot_management- Поля HTTP-ответа
Учтите, что зал ожидания не применяется к трафику, который соответствует выражениям правил обхода, и такой трафик не учитывается как активные пользователи. К этому трафику не применяется ни одна из функций Waiting Room, в том числе предварительная очередь событий, метод очереди Reject или режим Queue-all. Учитывайте это при создании и включении правил обхода Waiting Room. Используйте правила обхода только для трафика, в котором вы уверены: он не перегрузит ваш источник и не вызовет значительных всплесков трафика.
Типичные сценарии использования
- Исключение по пути/URL-адресу: обходит определённые пути или URL-адреса в пределах пути, настроенного для зала ожидания, если вы не хотите, чтобы зал ожидания применялся к этим путям.
- Административный обход: позволяет внутренним администраторам сайта всегда обходить зал ожидания, обычно определяемым по IP-адресам.
- Геотаргетинг: Исключает определённые страны из очереди.
- Исключение по строке запроса: Исключает определённые строки запроса по пути, настроенному для вашего зала ожидания.
- Исключение расширений файлов: Запрещает применение зала ожидания к определённым расширениям файлов, например
.jsкоторые вы используете в HTML-шаблоне Waiting Room, чтобы они корректно отображались.
Примечание о подзапросах
Помимо строк запроса или путей, которые нужно исключить, включите в выражение также все пути или типы файлов, к которым могут обращаться подзапросы: иначе на эти ресурсы или пути тоже будет распространяться зал ожидания. В противном случае такие подзапросы будут получать cookie зала ожидания, поскольку по-прежнему подпадают под его действие.
Сюда могут входить, например, изображения, файлы JavaScript, файлы CSS и другие. Также можно настроить правило так, чтобы зал ожидания обходился для любых путей определённого типа файлов, если запрос заканчивается на .js, .css, .png и так далее, чтобы вам не приходилось вручную настраивать каждый путь, по которому могут храниться эти ресурсы.
Пример условия: ends_with(http.request.uri.path, ".js")
Создание правил обхода Waiting Room в дашборде
Чтобы создать новое правило обхода:
-
На панели управления Cloudflare перейдите к разделу Waiting Room страницу.
Перейдите в Waiting Room ↗ -
Разверните зал ожидания и выберите Управление правилами.
-
Выберите Создание нового правила обхода.
-
Введите описательное название правила в Название правила.
-
В разделе Когда входящие запросы соответствуют, определите выражение правила. Используйте Поле раскрывающемся списке выберите HTTP-свойство. Для каждого запроса значение выбранного вами свойства для Поле сравнивается со значением, которое вы указали для Значение с помощью оператора, выбранного в Оператор.
-
В разделе Затем, автоматически выбирается действие Bypass Waiting Room. Перед сохранением проверьте выражение и убедитесь, что оно соответствует именно тому трафику, для которого зал ожидания применяться не должен.
-
Чтобы сохранить и развернуть правило, выберите Save and Deploy. Если вы ещё не готовы развернуть правило, выберите Save as Draft.
Операторы и символы группировки
- Операторы сравнения определяют, как значения, заданные в выражении, должны соотноситься с фактическим значением HTTP-запроса, чтобы выражение возвращало true.
- Логические операторы объединяют два выражения в составное выражение и используют порядок приоритета операций, чтобы определить, как это выражение будет вычислено.
- Символы группировки позволяют упорядочивать выражения, задавать приоритет операторов и вкладывать выражения друг в друга.
Примеры использования приведены в Операторы и символы группировки в документации по языку Rules language.
Управление правилами через Waiting Room API
Вы можете управлять правилами обхода зала ожидания, а также удалять и создавать их через Waiting Room API. Правило обхода представляет собой Waiting Room Rule, использующее bypass_waiting_room действие.
При создании Bypass Waiting Room Rule через API убедитесь, что вы:
- Уже создали и сохранили зал ожидания, к которому должно применяться это правило.
- Определите выражение, указывающее, какой трафик должен обходить зал ожидания.
- Задайте для действия правила значение
bypass_waiting_room.
Чтобы создать правило зала ожидания, добавьте следующий эндпоинт Waiting Room API к базовому URL-адресу Cloudflare API. Новые правила зала ожидания будут добавлены после уже существующих.
POST zones/{zone_id}/waiting_rooms/{room_id}/rulesНастройте правило обхода, указав следующие обязательные и необязательные параметры:
- Описание (необязательно): добавьте описание правила, чтобы зафиксировать назначение этого правила обхода.
- Выражение (обязательно): определите выражение правила, указывающее, к какому трафику применяется правило обхода.
- Действие (обязательно): определите действие, которое выполняется, если выражение истинно. Задайте значение
bypass_waiting_room. - Включено (необязательно): по умолчанию используется значение true. Если вы не хотите развёртывать правило, задайте значение false.
Примеры API
Обойти путь в пределах зала ожидания и все его подпути
Если ваш зал ожидания настроен по адресу example.com/ и вы хотите, чтобы весь трафик, посещающий example.com/bypassme и все его подпути. В этом примере мы также хотим убедиться, что любые вложенные запросы js, css, или png тоже обходили зал ожидания, чтобы все ресурсы корректно загружались на путях, для которых настроен обход. Обратите внимание, что в этом примере все запросы, заканчивающиеся на js, css или png будет обходить зал ожидания независимо от подпути. Если это не то поведение, которое вам нужно, измените выражение с учётом ваших требований и архитектуры сайта.
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/$WAITING_ROOM_ID/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "subpath bypass",
"expression": "starts_with(http.request.uri.path, \"/bypassme\") or ends_with(http.request.uri.path, \".js\") or ends_with(http.request.uri.path, \".css\") or ends_with(http.request.uri.path, \".png\")",
"action": "bypass_waiting_room"
}'Разрешить заданному списку IP-адресов обходить зал ожидания
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/$WAITING_ROOM_ID/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "ip list bypass",
"expression": "ip.src in $bypass_ip_list",
"action": "bypass_waiting_room"
}'Другие параметры API для управления правилами обхода
Через Waiting Room API можно также управлять правилами обхода с помощью вызовов Waiting Room rules API. Доступны следующие действия:
- List Waiting Room Rules: возвращает список правил зала ожидания.
- Замена правил Waiting Room: заменяет все правила зала ожидания.
- Изменение правил Waiting Room: обновляет правило зала ожидания.
- Удаление правил Waiting Room: удаляет правило зала ожидания.