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

Поддерживаемые поля и операторы

Набор полей, поддерживаемых правилами балансировки нагрузки, зависит от того, проксирует ли Cloudflare трафик, проходящий через ваш балансировщик нагрузки.

Если вы используете не тот набор полей, возможны непредвиденные результаты. Для лучшего результата используйте поля, соответствующие статус прокси.

Кроме того, некоторые поля правил Load Balancing доступны в Expression Builder, как описано в Выражения балансировки нагрузки , тогда как остальные можно настроить только вручную, через API или Expression Editor

Наборы полей Expression Builder

В следующей таблице показано, как поля, доступные в Expression Builder сгруппированы.

Набор полей Раздел в Expression Builder Описание
Поля, поддерживаемые независимо от режима прокси BOTH Значения, которые всегда доступны независимо от статуса проксирования балансировщика нагрузки.
Поля, доступные только в проксируемом режиме PROXIED ONLY Значения, доступные только если балансировщик нагрузки проксируется.
Поля только для непроксируемых записей NON-PROXIED ONLY Значения, доступные только если балансировщик нагрузки не проксируется (трафик DNS only).
Выберите поля балансировщика нагрузки на основе заголовка статуса прокси

Поля, поддерживаемые независимо от режима прокси

Независимо от вашего трафика статус прокси, правила Load Balancing могут обращаться к значениям следующих полей:

ПолеИмя в Expression BuilderОписание
cf.load_balancer.name

Bytes

Load Balancer Name

Представляет имя балансировщика нагрузки, выполняющего эти правила.

Пример значения:


lb.example.com

cf.load_balancer.region

Bytes

Load Balancer Region

Предоставляет

название региона

дата-центра, обрабатывающего запрос.

Пример значения:


ENAM

ip.src

IP address

IP Source Address

Если соединение проксируется, это поле содержит IP-адрес клиента по протоколу TCP; он может быть скорректирован для отражения фактического адреса клиента с помощью HTTP- заголовков, например X-Forwarded-For или X-Real-IP .

Если соединение не проксируется (только DNS), это поле содержит исходный адрес ECS, если он доступен. Если он недоступен, поле содержит IP-адрес DNS-резолвера клиента.

Предупреждение об устаревании: В будущем это поле будет всегда содержать IP-адрес резолвера клиента для непроксируемых запросов. Чтобы проверить наличие ECS и использовать IP-адрес ECS, см. поля

dns.rr.opt.client

и

dns.rr.opt.client.addr

, соответственно.

Пример значения:


1.2.3.4

ip.src.asnum

Number

AS Number

16- или 32-битное целое число, представляющее номер автономной системы (AS), связанный с IP-адресом клиента.

Пример значения:


13335

Поля, доступные только в проксируемом режиме

Если ваш трафик проксируется через Cloudflare, вам доступны все поля, перечисленные в разделе Поля, поддерживаемые независимо от режима прокси в дополнение к следующим полям:

Многие из этих полей ссылаются на Документация по языку правил.

ПолеИмя в Expression BuilderОписание
http.host
String
(Только ручной ввод)

Представляет имя хоста, используемое в полном URI запроса.

Пример значения:
www.example.org ↗

http.referer
String
(Только ручной ввод)

Представляет заголовок HTTP-запроса Referer, который содержит адрес веб-страницы, откуда был выполнен переход на текущую запрошенную страницу.

Пример значения:
Referer: htt­ps://developer.example.org/en-US/docs/Web/JavaScript

http.request.headers
Map<Array<String>>
Header

Представляет заголовки HTTP-запроса в виде Map (ассоциативного массива).

Ключами ассоциативного массива являются имена заголовков HTTP-запроса приводится к нижнему регистру.

Если заголовки повторяются, массив включает их в том порядке, в котором они встречаются в запросе.

Декодирование: декодирование не выполняется
Пробелы: сохранено
Не-ASCII: сохранено

Пример:
any(http.request.headers["content-type"][*] == "application/json")

Пример значения:
{"content-type": ["application/json"]}

http.request.method
String
Request Method

Представляет HTTP-метод в виде строки из символов верхнего регистра.

Пример значения:
GET

http.request.timestamp.sec
Integer
Timestamp

Представляет временную метку получения запроса Cloudflare, выраженную в формате Unix-времени в секундах. Значение состоит из 10 цифр.

Пример значения:
1484063137

http.request.uri
String
URI

Представляет путь URI и строку запроса.

Пример значения:
/articles/index?section=539061&expand=comments

http.request.uri.args
Map<Array<String>>
(Только ручной ввод)

Представляет аргументы HTTP URI запроса в виде Map (ассоциативного массива).

Если аргумент повторяется, массив содержит несколько элементов в том порядке, в котором они встречаются в запросе.

Значения не проходят предварительную обработку и сохраняют регистр символов, использованный в запросе.

Декодирование: декодирование не выполняется
Не-ASCII: сохранено

Пример:
any(http.request.uri.args["search"][*] == "red+apples")

Пример значения:
{"search": ["red+apples"]}

http.request.uri.args.names
Array<String>
(Только ручной ввод)

Представляет имена аргументов в строке запроса HTTP URI. Имена не проходят предварительную обработку и сохраняют регистр символов, использованный в запросе.

Если имя повторяется, массив содержит несколько элементов в том порядке, в котором они встречаются в запросе.

Декодирование: декодирование не выполняется
Не-ASCII: сохранено

Пример:
any(http.request.uri.args.names[*] == "search")

Пример значения:
["search"]

http.request.uri.args.values
Array<String>
(Только ручной ввод)

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

Повторяющиеся значения указываются несколько раз.

Декодирование: декодирование не выполняется
Не-ASCII: сохранено

Пример:
any(http.request.uri.args.values[*] == "red+apples")

Пример значения:
["red+apples"]

http.request.uri.path
String
URI Path

Представляет путь URI запроса.

Пример значения:
/articles/index

http.request.uri.query
String
URI Query

Представляет всю строку запроса без ? разделитель.

Пример значения:
section=539061&expand=comments

http.request.version
String
HTTP Version

Представляет используемую версию протокола HTTP. Используйте это поле, если для разных версий требуются разные проверки.

Примеры значений:

  • HTTP/1.1
  • HTTP/3

Поля только для непроксируемых записей

Если ваш трафик не проксируется через Cloudflare, вам доступны все поля, перечисленные в разделе Поля, поддерживаемые независимо от режима прокси в дополнение к следующим полям:

ПолеИмя в Expression BuilderОписание
dns.qry.name

Bytes

Query Name

Представляет запрошенное имя запроса.

Пример значения:


example.com.

dns.qry.name.len

Integer

Query Name Length

Представляет длину имени запроса в байтах.

Пример значения:


123

dns.qry.qu

Boolean

Question

Когда true, это поле означает, что полученное сообщение DNS было запросом.

dns.qry.type

Integer

Query Type

Представляет числовое значение

Тип DNS-запроса

.

Примеры значений:

  • 1 (запись A)

  • 28 (запись AAAA)

dns.rr.opt.client

Boolean

(

Только ручной ввод

)

Когда true, это поле означает, что адрес EDNS Client Subnet (ECS) был отправлен вместе с DNS-запросом.

dns.rr.opt.client.addr

String

(

Только ручной ввод

)

Если это поле присутствует, оно указывает адрес ECS, отправленный вместе с DNS- запросом.

Пример значения:


1.2.3.0

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

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