Переменные для Content Rules

Этот документ описывает все поддерживаемые переменные в правилах Content Switch и Content Modification. Переменные могут быть либо скалярными значениями, либо массивами.

Переменные для Content Modification

Скалярные переменные

Эти переменные содержат одиночные значения и могут использоваться внутри полей заголовков или значений куки.

  • $path — Путь запроса без query-параметров (например, /some/path)

  • $client_addr — IP-адрес клиента

  • $client_port — Порт клиента

  • $server_addr — IP-адрес сервера в запросе

  • $server_port — Порт сервера

  • $scheme — Протокол (например, http или https)

  • $http_host — Значение заголовка Host

  • $x_forwarded_for — Значение заголовка X-Forwarded-For

  • $forwarded — Значение заголовка Forwarded

Proxy-переменные

  • $proxy_add_x_forwarded_for — Автоматически добавляет IP-адрес клиента в цепочку X-Forwarded-For. Если заголовок изначально отсутствует, эта переменная содержит IP-адрес клиента.

    Пример использования в правиле:

    request header set name X-Forwarded-For value $proxy_add_x_forwarded_for
    
  • $transition_forwarded_for — Предоставляет то же значение, что и $proxy_add_x_forwarded_for, но форматированное как заголовок Forwarded. Это полезно для преобразования X-Forwarded-For в Forwarded.

    Пример использования:

    request header set name Forwarded value $transition_forwarded_for
    

Переменные для Content Switch

Скалярные переменные

Эти переменные содержат одиночные значения и могут использоваться внутри полей заголовков или значений куки.

  • $path — Путь запроса без query-параметров (например, /some/path)

  • $method — Метод HTTP-запроса

  • $content_length — Значение заголовка Content-Length, если он присутствует

  • $body — Содержимое тела HTTP-запроса

  • $client_addr — IP-адрес клиента

  • $client_port — Порт клиента

  • $server_addr — IP-адрес сервера в запросе

  • $server_port — Порт сервера

  • $scheme — Протокол (например, http или https)

Переменные массива

Эти переменные структурированы как коллекции ключ-значение и доступны через строковые ключи:

  • $header — HTTP-заголовки запроса

  • $cookie — Куки

  • $query — Параметры запроса

Примеры использования:

$header["User-Agent"]
$cookie["session_id"]

Примечание

Ключи заголовков и куки не чувствительны к регистру.

Переменные SSL/TLS

Эти переменные доступны при использовании защищённого соединения (TLS/SSL). Они общие для Content Switch и Content Modification:

  • $ssl_verify_result — Результат проверки клиентского сертификата (например, NONE, SUCCESS или FAILURE:<diagnostic>)

  • $ssl_protocol — Версия протокола (например, TLS1.3)

  • $ssl_sni — Строка Server Name Indication, если доступна

  • $ssl_cipher — Набор шифров, используемый в SSL-соединении

  • $ssl_client_v_end — Дата окончания действия клиентского сертификата (значение из поля Not After)

  • $ssl_client_s_dn — Имя субъекта (Distinguished Name) из клиентского сертификата

  • $ssl_client_i_dn — Имя отличия (issuer) из клиентского сертификата

  • $ssl_client_serial — Серийный номер клиентского сертификата