你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Front Door 规则集服务器变量
当使用规则集时,规则集服务器变量可用于访问关于请求的结构化信息。
当使用规则集匹配条件时,服务器变量可用作匹配条件,以便你可以识别具有特定属性的请求。
当使用规则集操作时,你可以使用服务器变量来动态更改请求和响应标头,以及重写 URL、路径和查询字符串(例如,在加载新页面或提交表单时)。
注意
服务器变量适用于 Azure Front Door 标准层和高级层。
支持的变量
变量名称 | 说明 |
---|---|
socket_ip |
与 Azure Front Door 边缘建立直接连接的 IP 地址。 如果客户端使用 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 |
标识 Web 客户端要访问的主机中的特定资源。 这是请求 URI 中没有参数或前导斜杠的部分。 例如,在请求 http://contoso.com:8080/article.aspx?id=123&title=fabrikam 中,url_path 值为 article.aspx 。 Azure Front Door 支持使用 {url_path:seg#} 服务器变量动态捕获 URL 路径,并通过 {url_path.tolower} 或 {url_path.toupper} 将 URL 路径转换为小写或大写。 有关详细信息,请参阅服务器变量格式和服务器变量。 若要在匹配条件中访问此服务器变量,请使用请求路径条件。 |
服务器变量格式
使用规则集操作时,请使用以下格式指定服务器变量:
{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_path:seg1}/home
,重写后的预期 URL 路径为/12345/home
。 对于多段捕获,当源模式为/id/12345/default/location/test
时,URL 重写目标/{url_path:seg1:3}/home
会导致/12345/default/location/home
。 段捕获包括位置路径,因此,如果路由为/match/*
,则段 0 将匹配。偏移量对应于起始段的索引,长度是指要捕获的段数,包括索引 = 偏移量处的段。
假设偏移量和长度为正值,则以下逻辑适用:
- 如果未包含长度,则捕获索引 = 偏移量处的段。
- 如果包含长度,则捕获从索引 = 偏移量一直到索引 = 偏移量 + 长度之间的段。
另外还会处理以下特殊情况:
- 如果偏移量为负值,则从路径末尾向后计数以获取起始段。
- 如果偏移量是大于等于段数的负值,则设置为 0。
- 如果偏移量大于段数,则结果为空。
- 如果长度为 0,则返回由偏移量指定的单个段
- 如果长度为负值,则将其视为第二个偏移量,并从路径末尾向后计算。 如果该值小于偏移量,则会导致空字符串。
- 如果长度大于段数,则返回路径中留下的内容。
{url_path.tolower}
/{url_path.toupper}
:将 URL 路径转换为小写或大写。 例如,URL 重写/重定向中/lowercase/ABcDXyZ/EXAMPLE
的目标{url_path.tolower}
会导致/lowercase/abcdxyz/example
。/ABcDXyZ/example
URL 重写/重定向中的目标{url_path.toupper}
会导致/ABCDXYZ/EXAMPLE
。
支持的规则集操作
以下规则集操作支持服务器变量:
后续步骤
- 详细了解 Azure Front Door 规则集。
- 详细了解规则集匹配条件。
- 详细了解规则集操作。