Azure Front Door 規則集伺服器變數
當您使用規則集時,規則集伺服器變數可讓您存取要求的結構化資訊。
當您使用規則集比對條件時,伺服器變數可當作比對條件,讓您識別具有特定屬性的要求。
當您使用規則集動作時,您可以使用伺服器變數來動態變更要求和回應標頭,以及重寫 URL、路徑和查詢字串,例如載入新頁面或張貼表單時。
注意
伺服器變數僅適用於 Azure Front Door 標準和進階層。
支援的變數
變數名稱 | 描述 |
---|---|
socket_ip |
Azure Front Door 邊緣的直接連線 IP 位址。 如果用戶端使用 HTTP Proxy 或負載平衡器來傳送要求,則 socket_ip 的值是 Proxy 或負載平衡器的 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_path:seg1}/home
,重寫後的預期 URL 路徑為/12345/home
。 針對多個區段擷取,當來源模式為/id/12345/default/location/test
時,URL 重寫目的地/{url_path:seg1:3}/home
會產生/12345/default/location/home
。 區段擷取包含位置路徑,因此如果路由為/match/*
,區段 0 將會相符。位移會對應到開始區段的索引,而長度是指要擷取多少個區段,包括位於 index = offset 的區段。
假設位移和長度為正數,則適用下列邏輯:
- 如果未包含 length,請擷取位於 index = offset 的區段。
- 包含 length 時,擷取區段從 index = offset up 直到 index = offset + length。
也會處理下列特殊案例:
- 如果 offset 為負數,則會從路徑結尾向後計算以取得起始區段。
- 如果 offset 是大於或等於區段數目的負值,請將 設定為 0。
- 如果 offset 大於區段數目,則結果會是空的。
- 如果 length 為 0,則會傳回位移所指定的單一區段
- 如果 length 為負數,請將它視為第二個位移,並從路徑結尾向後計算。 如果值小於位移,則會產生空字串。
- 如果 length 大於區段數目,則傳回路徑中保留的內容。
{url_path.tolower}
/{url_path.toupper}
:將 URL 路徑轉換為小寫或大寫。 例如,URL 重寫/重新導向中的目的地{url_path.tolower}
會導致/lowercase/ABcDXyZ/EXAMPLE
。/lowercase/abcdxyz/example
{url_path.toupper}
URL 重寫/重新導向/ABcDXyZ/example
中的結果/ABCDXYZ/EXAMPLE
目的地。
支援的規則集動作
下列規則集動作支援伺服器變數:
下一步
- 深入了解 Azure Front Door 規則集。
- 深入了解規則集比對條件。
- 深入了解規則集動作。