Переменные сервера из набора правил 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=fabrikam query_string значение равноid=123&title=fabrikam .Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте строку запроса. |
request_scheme |
Схема запроса: http или https .Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте протокол запроса. |
request_uri |
Полный исходный код URI запроса (с аргументами). Например, в запросе http://contoso.com:8080/article.aspx?id=123&title=fabrikam request_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=fabrikam url_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
.
Поддерживаемые действия набора правил
Переменные сервера поддерживаются в следующих действиях, выполняемых набором правил:
- Операция кэширования строки запроса при переопределении конфигурации маршрута
- Изменение заголовка запроса
- Изменение заголовка ответа
- Перенаправление URL-адреса
- Перезапись URL-адресов
Следующие шаги
- Узнайте о наборе правил Azure Front Door.
- Дополнительные сведения об условиях соответствия для наборов правил.
- Дополнительные сведения о действиях набора правил.