共用方式為


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 要求的方法,例如 GETPOST
若要在比對條件中存取此伺服器變數,請使用要求方法
http_version 要求通訊協定。 通常為 HTTP/1.0HTTP/1.1HTTP/2.0
若要在比對條件中存取此伺服器變數,請使用 HTTP 版本
query_string 接在所要求 URL 中「?」後面的變數/值組清單。
例如,在要求 http://contoso.com:8080/article.aspx?id=123&title=fabrikam 中,query_string 值為 id=123&title=fabrikam
若要在比對條件中存取此伺服器變數,請使用查詢字串
request_scheme 要求配置:httphttps
若要在比對條件中存取此伺服器變數,請使用要求通訊協定
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目的地。

支援的規則集動作

下列規則集動作支援伺服器變數:

下一步