次の方法で共有


Azure Front Door ルール セットのサーバー変数

ルール セットのサーバー変数では、ルール セットを使用する要求に関する構造化情報にアクセスできます。

ルール セットの一致条件を使用すると、サーバー変数を一致条件として使用して、特定のプロパティを持つ要求を識別できます。

ルール セットのアクションを使うと、新しいページが読み込まれるときや、フォームがポストされるときなどに、要求ヘッダーと応答ヘッダーを動的に変更し、また URL、パス、クエリ文字列を書き換えるためのサーバー変数を使用できます。

Note

サーバー変数は、Azure Front Door Standard および Premium レベルで使用できます。

サポートされる変数

変数名 説明
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 国および地域コードによって配信元の要求者の国および地域を示します。
一致条件でこのサーバー変数にアクセスするには、リモート アドレスを使用し、"演算子" を "geo が次の値と一致" または "geo が次の値と一致しない" に設定します。
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 要求スキーム: 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}: 特定のオフセットの後から、変数の末尾まで、サーバー変数を含めます。 オフセットは 0 から始まります。 たとえば、クライアントの IP アドレスが 111.222.333.444 の場合、{client_ip:3} トークンは .222.333.444 に評価されます。

  • {variable:offset:length}: 特定のオフセットの後から、指定した長さまで、サーバー変数を含めます。 オフセットは 0 から始まります。 たとえば、変数 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
    • 長さ 0: {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 パス セグメントをキャプチャして使用できるようにします。 ユーザーは、substring キャプチャ {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 の場合、オフセットで指定された単一セグメントが返されます。
    • 長さが負の場合は、2 番目のオフセットとして扱い、パスの末尾から後方に計算します。 値がオフセットより小さい場合は、空の文字列になります。
    • 長さがセグメント数より大きい場合は、パスに残っているものが返されます。
  • {url_path.tolower}/{url_path.toupper}: URL パスを小文字または大文字に変換します。 たとえば、/lowercase/ABcDXyZ/EXAMPLE の URL 書き換え先/リダイレクト先が {url_path.tolower} の場合、結果は /lowercase/abcdxyz/example です。 /ABcDXyZ/example の URL 書き換え先/リダイレクト先が {url_path.toupper} の場合、結果は /ABCDXYZ/EXAMPLE です。

サポートされているルール セットのアクション

サーバー変数は、次のルール セットのアクションでサポートされています。

次の手順