Переменные сервера из набора правил Azure Front Door

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

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

При использовании действий набора правил можно использовать переменные сервера для динамического изменения заголовков запроса и ответа, а также переопределения URL-адресов, путей и строк запроса, например при загрузке новой страницы или при публикации формы.

Примечание.

Переменные сервера доступны с уровнями Azure Front Door уровня "Стандартный" и "Премиум".

Поддерживаемые переменные

Имя переменной Description
socket_ip IP-адрес прямого подключения к краю Azure Front Door. Если клиент для отправки запроса использовал прокси-сервер HTTP или подсистему балансировки нагрузки, значение socket_ip — это IP-адрес прокси-сервера или подсистемы балансировки нагрузки.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте адрес сокета.
client_ip IP-адрес клиента, от которого исходит оригинальный запрос клиента. Если в запросе был указан заголовок X-Forwarded-For, то IP-адрес клиента выбирается из заголовка.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте удаленный адрес и задайте для оператора условие соответствия IP-адреса или несоответствия IP-адреса.
client_port IP-порт клиента, отправившего запрос.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте порт клиента.
hostname Имя узла в запросе от клиента.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте имя узла.
geo_country Указывает страну или регион происхождения инициатора запроса с помощью кода страны или региона.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте удаленный адрес и задайте для оператора условие соответствия геообъекта или несоответствия геообъекта.
http_method Метод, используемый для выполнения запроса URL-адреса, например GET или POST.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте метод запроса.
http_version Протокол запроса. Обычно это HTTP/1.0, HTTP/1.1 или HTTP/2.0.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте версию протокола HTTP.
query_string Список пар переменных и значений, следующий за ? запрошенным URL-адресом.
Например, в запросе http://contoso.com:8080/article.aspx?id=123&title=fabrikamquery_string значение равноid=123&title=fabrikam.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте строку запроса.
request_scheme Схема запроса: http или https.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте протокол запроса.
request_uri Полный исходный код URI запроса (с аргументами).
Например, в запросе http://contoso.com:8080/article.aspx?id=123&title=fabrikamrequest_uri значение равноhttp://contoso.com:8080/article.aspx?id=123&title=fabrikam.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте URL-адрес запроса.
ssl_protocol Протокол установленного подключения TLS.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте протокол SSL.
server_port Порт сервера, принявшего запрос.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте порт сервера.
url_path Определяет конкретный ресурс на узле, к которому требуется доступ из веб-клиента. Это часть URI запроса без аргументов или начальной косой черты.
Например, в запросе http://contoso.com:8080/article.aspx?id=123&title=fabrikamurl_path значение равноarticle.aspx.
Azure Front Door поддерживает динамическое захват пути URL-адреса с {url_path:seg#} помощью переменной сервера и преобразует путь URL-адреса в нижний регистр или верхний регистр.{url_path.tolower} {url_path.toupper} Дополнительные сведения см. в разделе "Формат переменных сервера" и переменные сервера.
Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте условие пути запроса.

Формат переменных сервера

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

  • {variable}: включить всю переменную сервера. Например, если IP-адрес клиента 111.222.333.444, маркер {client_ip} будет иметь значение 111.222.333.444.

  • {variable:offset}: включить переменную сервера после определенного смещения, до конца переменной. Смещение отсчитывается от нуля. Например, если IP-адрес клиента 111.222.333.444, маркер {client_ip:3} будет иметь значение .222.333.444.

  • {variable:offset:length}: включить переменную сервера после указанного смещения, вплоть до указанной длины. Смещение отсчитывается от нуля. Например, если переменная var имеет значение AppId=01f592979c584d0f9d679db3e66a3e5e:

    • Смещение в пределах диапазона, без длин: {var:0} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:6} = 01f592979c584d0f9d679db3e66a3e5e, {var:-8} = e66a3e5e
    • Смещение вне пределов диапазона, без длин: {var:-128} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:128} = NULL
    • Смещения и длины в пределах диапазона: {var:0:5} = AppId, {var:7:7} = 1f59297, {var:7:-7} = 1f592979c584d0f9d679db3e
    • Нулевые длины: {var:0:0} = NULL, {var:4:0} = NULL
    • Смещения в пределах диапазона и длины за пределами диапазона: {var:0:100} = AppId=01f592979c584d0f9d679db3e66a3e5e, {var:5:100} = =01f592979c584d0f9d679db3e66a3e5e, {var:0:-48} = NULL, {var:4:-48} = NULL
  • {url_path:seg#}: разрешить пользователям записывать и использовать нужный сегмент пути URL-адреса в перенаправлении URL-адресов, перезаписи URL-адресов или любом понятном действии. Пользователь также может записывать несколько сегментов с помощью того же стиля, что и запись {url_path:seg1:3}подстроки. Например, для исходного шаблона /id/12345/default и назначения перезаписи URL-адреса ожидаемый путь URL-адреса после перезаписи/{url_path:seg1}/home/12345/home. Для записи с несколькими сегментами, если исходный шаблон является /id/12345/default/location/test, результаты перезаписи /{url_path:seg1:3}/home URL-адреса приводят к /12345/default/location/homeназначению. Запись сегментов включает путь к расположению, поэтому если маршрут равен /match/*, сегмент 0 будет соответствовать.

    Смещение соответствует индексу начального сегмента, а длина — сколько сегментов требуется записать, в том числе по индексу = смещение.

    Предполагая, что смещение и длина являются положительными, применяется следующая логика:

    • Если длина не включена, зафиксируйте сегмент по индексу = смещение.
    • Если длина включена, фиксируйте сегменты из индекса = смещение до индекса = смещение + длина.

    Также обрабатываются следующие особые случаи:

    • Если смещение отрицательное, подсчитывайте назад от конца пути, чтобы получить начальный сегмент.
    • Если смещение является отрицательным значением, превышающим или равным количеству сегментов, задайте значение 0.
    • Если смещение больше числа сегментов, результат пуст.
    • Если длина равна 0, возвращает один сегмент, заданный смещением.
    • Если длина отрицательной, обработайте ее как второе смещение и вычислите назад от конца пути. Если значение меньше смещения, оно приводит к пустой строке.
    • Если длина больше количества сегментов, верните значение, осталось в пути.
  • {url_path.tolower}/{url_path.toupper}: преобразуйте путь URL-адреса в нижний или верхний регистр. Например, назначение {url_path.tolower} в перезаписи ИЛИ перенаправлении URL-адресов для /lowercase/ABcDXyZ/EXAMPLE результатов /lowercase/abcdxyz/example. Назначение {url_path.toupper} в перезаписи ИЛИ перенаправлении URL-адресов для /ABcDXyZ/example результатов /ABCDXYZ/EXAMPLE.

Поддерживаемые действия набора правил

Переменные сервера поддерживаются в следующих действиях, выполняемых набором правил:

Следующие шаги