Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ Front Door Standard ✔️ Front Door Premium
Переменные сервера из набора правил предоставляют доступ к структурированным сведениям о запросе при работе с наборами правил.
При использовании условий соответствия, проверяемых набором правил, серверные переменные доступны в качестве таких условий, позволяющих выявлять запросы с определенными свойствами.
При использовании действий набора правил можно использовать переменные сервера для динамического изменения заголовков запроса и ответа, а также переопределения URL-адресов, путей и строк запроса, например при загрузке новой страницы или при публикации формы.
Примечание.
Переменные сервера доступны только на уровнях "Стандартный" и "Премиум" Azure Front Door.
Поддерживаемые переменные
| Имя переменной | Описание |
|---|---|
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} Дополнительные сведения см. в разделе "Формат переменных сервера" и переменные сервера. Чтобы получить доступ к этой переменной сервера в условии соответствия, используйте условие пути запроса. |
http_req_header_<headername> |
Записывает значение заголовка запроса. Для заголовка запроса Device переменная — это http_req_header_Device, значение переменной — Desktop. Имя заголовка в синтаксисе переменной поддерживает буквенно-цифровые символы и дефис (a-z, A-Z, 0-9 и "-"). |
http_req_arg_<querystringkeyname> |
Извлекает значение из пары ключ-значение строки запроса. Например, в запросе http://contoso.com:8080/article.aspx?id=123&title=fabrikamпеременная http_req_header_id, значение этой переменной равно 123. В синтаксисе переменной ключ строки запроса может содержать алфавитно-цифровые символы и тире (a-z, A-Z, 0-9 и "-"). |
http_resp_header_<headername> |
Записывает значение заголовка ответа из источника. Например, для заголовка ответа Access-Control-Allow-Origin https://learn.microsoft.com, переменная - это http_req_header_ заголовка Access-Control-Allow-Origin, а значение этой переменной равно https://learn.microsoft.com. Имя заголовка в синтаксисе переменной поддерживает буквенно-цифровые символы и дефис (a-z, A-Z, 0-9 и "-"). |
Формат переменных сервера
При работе с действиями набора правил укажите переменные сервера, используя следующие форматы:
-
{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 - Чтобы поэкспериментировать с работой {variable:offset:length}, откройте терминал Linux bash или используйте терминал bash в Azure Cloud Shell. Введите следующий пример в терминал и изучите выходные данные, чтобы понять, как работает извлечение подстроки.
- Смещение в пределах диапазона, без длин:
variable=helloworld123; echo ${variable:5} #Output = world123
variable=helloworld123; echo ${variable:0:5} #Output = hello
Примечание.
В Bash пробел требуется перед отрицательным числом расширения параметров, чтобы избежать синтаксической ошибки.
variable=helloworld123; echo ${variable: -3:3} #Output=123
variable=helloworld123; echo ${variable:5: -3} #Output = world
{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}/homeURL-адреса приводят к/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.
- Дополнительные сведения об условиях соответствия для наборов правил.
- Дополнительные сведения о действиях набора правил.