← Cloudflare Load Balancing / load-balancing / additional-options / load-balancing-rules
Поддерживаемые поля и операторы
Набор полей, поддерживаемых правилами балансировки нагрузки, зависит от того, проксирует ли 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
| Load Balancer Name | Представляет имя балансировщика нагрузки, выполняющего эти правила. Пример значения: lb.example.com |
cf.load_balancer.region
| Load Balancer Region | Предоставляет название региона дата-центра, обрабатывающего запрос. Пример значения: ENAM |
ip.src
| IP Source Address | Если соединение проксируется, это поле содержит IP-адрес клиента по протоколу TCP; он может
быть скорректирован для отражения фактического адреса клиента с помощью HTTP-
заголовков, например Если соединение не проксируется (только DNS), это поле содержит исходный адрес ECS, если он доступен. Если он недоступен, поле содержит IP-адрес DNS-резолвера клиента. Предупреждение об устаревании: В будущем это поле будет всегда содержать IP-адрес резолвера клиента для непроксируемых запросов. Чтобы проверить наличие ECS и использовать IP-адрес ECS, см. поля dns.rr.opt.client и dns.rr.opt.client.addr, соответственно. Пример значения: 1.2.3.4 |
ip.src.asnum
| AS Number | 16- или 32-битное целое число, представляющее номер автономной системы (AS), связанный с IP-адресом клиента. Пример значения: 13335 |
Поля, доступные только в проксируемом режиме
Если ваш трафик проксируется через Cloudflare, вам доступны все поля, перечисленные в разделе Поля, поддерживаемые независимо от режима прокси в дополнение к следующим полям:
Многие из этих полей ссылаются на Документация по языку правил.
| Поле | Имя в Expression Builder | Описание |
|---|---|---|
http.cookieString | (Только ручной ввод) | Представляет весь cookie в виде строки. Пример значения:
|
http.hostString | (Только ручной ввод) | Представляет имя хоста, используемое в полном URI запроса. Пример значения:
|
http.refererString | (Только ручной ввод) | Представляет заголовок HTTP-запроса Referer, который содержит адрес веб-страницы, откуда был выполнен переход на текущую запрошенную страницу. Пример значения:
|
http.request.headersMap<Array<String>> | Header | Представляет заголовки HTTP-запроса в виде Map (ассоциативного массива). Ключами ассоциативного массива являются имена заголовков HTTP-запроса приводится к нижнему регистру. Если заголовки повторяются, массив включает их в том порядке, в котором они встречаются в запросе. Декодирование: декодирование не выполняется
Пример:
Пример значения:
|
http.request.methodString | Request Method | Представляет HTTP-метод в виде строки из символов верхнего регистра. Пример значения:
|
http.request.timestamp.secInteger | Timestamp | Представляет временную метку получения запроса Cloudflare, выраженную в формате Unix-времени в секундах. Значение состоит из 10 цифр. Пример значения:
|
http.request.uriString | URI | Представляет путь URI и строку запроса. Пример значения:
|
http.request.uri.argsMap<Array<String>> | (Только ручной ввод) | Представляет аргументы HTTP URI запроса в виде Map (ассоциативного массива). Если аргумент повторяется, массив содержит несколько элементов в том порядке, в котором они встречаются в запросе. Значения не проходят предварительную обработку и сохраняют регистр символов, использованный в запросе. Декодирование: декодирование не выполняется
Пример:
Пример значения:
|
http.request.uri.args.namesArray<String> | (Только ручной ввод) | Представляет имена аргументов в строке запроса HTTP URI. Имена не проходят предварительную обработку и сохраняют регистр символов, использованный в запросе. Если имя повторяется, массив содержит несколько элементов в том порядке, в котором они встречаются в запросе. Декодирование: декодирование не выполняется
Пример:
Пример значения:
|
http.request.uri.args.valuesArray<String> | (Только ручной ввод) | Представляет значения аргументов в строке запроса HTTP URI. Значения не проходят предварительную обработку и сохраняют регистр символов, использованный в запросе. Они идут в том же порядке, что и в запросе. Повторяющиеся значения указываются несколько раз. Декодирование: декодирование не выполняется
Пример:
Пример значения:
|
http.request.uri.pathString | URI Path | Представляет путь URI запроса. Пример значения:
|
http.request.uri.queryString | URI Query | Представляет всю строку запроса без Пример значения:
|
http.request.versionString | HTTP Version | Представляет используемую версию протокола HTTP. Используйте это поле, если для разных версий требуются разные проверки. Примеры значений:
|
Поля только для непроксируемых записей
Если ваш трафик не проксируется через Cloudflare, вам доступны все поля, перечисленные в разделе Поля, поддерживаемые независимо от режима прокси в дополнение к следующим полям:
| Поле | Имя в Expression Builder | Описание |
|---|---|---|
dns.qry.name
| Query Name | Представляет запрошенное имя запроса. Пример значения: example.com. |
dns.qry.name.len
| Query Name Length | Представляет длину имени запроса в байтах. Пример значения: 123 |
dns.qry.qu
| Question | Когда |
dns.qry.type
| Query Type | Представляет числовое значение Тип DNS-запроса . Примеры значений:
|
dns.rr.opt.client
| ( Только ручной ввод ) | Когда |
dns.rr.opt.client.addr
| ( Только ручной ввод ) | Если это поле присутствует, оно указывает адрес ECS, отправленный вместе с DNS- запросом. Пример значения: 1.2.3.0 |
Операторы и символы группировки
-
Операторы сравнения определяют, как значения, заданные в выражении, должны соотноситься с фактическим значением HTTP-запроса, чтобы выражение вернуло true.
-
Логические операторы объединяют два выражения в составное выражение и используют порядок приоритета операций, чтобы определить, как вычисляется выражение.
-
Grouping symbols позволяют упорядочивать выражения, задавать приоритет операций и вкладывать выражения друг в друга.
Примеры использования приведены в Операторы и символы группировки в документации по языку Rules language.