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

Правила обхода Waiting Room

Waiting Room Bypass Rule представляет собой тип Waiting Room Rule, построенный на Cloudflare Ruleset Engine и управляемый через Waiting Room API. С его помощью можно указать конкретный трафик или разделы вашего сайта или приложения, на которые не должен распространяться зал ожидания. Каждое правило обхода создается и настраивается на уровне отдельного зала ожидания, что обеспечивает точный контроль над его трафиком.

Чтобы указать, где должны применяться правила обхода, напишите пользовательская логика с помощью поля доступных через Cloudflare Ruleset Engine, за исключением следующих:

Учтите, что зал ожидания не применяется к трафику, который соответствует выражениям правил обхода, и такой трафик не учитывается как активные пользователи. К этому трафику не применяется ни одна из функций Waiting Room, в том числе предварительная очередь событий, метод очереди Reject или режим Queue-all. Учитывайте это при создании и включении правил обхода Waiting Room. Используйте правила обхода только для трафика, в котором вы уверены: он не перегрузит ваш источник и не вызовет значительных всплесков трафика.

Типичные сценарии использования

Примечание о подзапросах

Помимо строк запроса или путей, которые нужно исключить, включите в выражение также все пути или типы файлов, к которым могут обращаться подзапросы: иначе на эти ресурсы или пути тоже будет распространяться зал ожидания. В противном случае такие подзапросы будут получать cookie зала ожидания, поскольку по-прежнему подпадают под его действие.

Сюда могут входить, например, изображения, файлы JavaScript, файлы CSS и другие. Также можно настроить правило так, чтобы зал ожидания обходился для любых путей определённого типа файлов, если запрос заканчивается на .js, .css, .png и так далее, чтобы вам не приходилось вручную настраивать каждый путь, по которому могут храниться эти ресурсы.

Пример условия: ends_with(http.request.uri.path, ".js")

Создание правил обхода Waiting Room в дашборде

Чтобы создать новое правило обхода:

  1. На панели управления Cloudflare перейдите к разделу Waiting Room страницу.

    Перейдите в Waiting Room ↗
  2. Разверните зал ожидания и выберите Управление правилами.

  3. Выберите Создание нового правила обхода.

  4. Введите описательное название правила в Название правила.

  5. В разделе Когда входящие запросы соответствуют, определите выражение правила. Используйте Поле раскрывающемся списке выберите HTTP-свойство. Для каждого запроса значение выбранного вами свойства для Поле сравнивается со значением, которое вы указали для Значение с помощью оператора, выбранного в Оператор.

  6. В разделе Затем, автоматически выбирается действие Bypass Waiting Room. Перед сохранением проверьте выражение и убедитесь, что оно соответствует именно тому трафику, для которого зал ожидания применяться не должен.

  7. Чтобы сохранить и развернуть правило, выберите Save and Deploy. Если вы ещё не готовы развернуть правило, выберите Save as Draft.

Операторы и символы группировки

Примеры использования приведены в Операторы и символы группировки в документации по языку Rules language.

Управление правилами через Waiting Room API

Вы можете управлять правилами обхода зала ожидания, а также удалять и создавать их через Waiting Room API. Правило обхода представляет собой Waiting Room Rule, использующее bypass_waiting_room действие.

При создании Bypass Waiting Room Rule через API убедитесь, что вы:

Чтобы создать правило зала ожидания, добавьте следующий эндпоинт Waiting Room API к базовому URL-адресу Cloudflare API. Новые правила зала ожидания будут добавлены после уже существующих.

POST zones/{zone_id}/waiting_rooms/{room_id}/rules

Настройте правило обхода, указав следующие обязательные и необязательные параметры:

Примеры API

Обойти путь в пределах зала ожидания и все его подпути

Если ваш зал ожидания настроен по адресу example.com/ и вы хотите, чтобы весь трафик, посещающий example.com/bypassme и все его подпути. В этом примере мы также хотим убедиться, что любые вложенные запросы js, css, или png тоже обходили зал ожидания, чтобы все ресурсы корректно загружались на путях, для которых настроен обход. Обратите внимание, что в этом примере все запросы, заканчивающиеся на js, css или png будет обходить зал ожидания независимо от подпути. Если это не то поведение, которое вам нужно, измените выражение с учётом ваших требований и архитектуры сайта.

Создание правила Waiting Room
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-адресов обходить зал ожидания

Создание правила Waiting Room
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. Доступны следующие действия: