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 要求を行うために使用されたメソッド (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}
: 特定のオフセットの後から、変数の末尾まで、サーバー変数を含めます。 オフセットは 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
です。
サポートされているルール セットのアクション
サーバー変数は、次のルール セットのアクションでサポートされています。
- ルート構成のオーバーライドでのクエリ文字列のキャッシュ動作
- 要求ヘッダーの変更
- 応答ヘッダーの変更
- URL リダイレクト
- URL 書き換え
次の手順
- Azure Front Door のルール セットの詳細について確認します。
- ルール セットの一致条件の詳細を確認します。
- ルール セットのアクションの詳細を確認します。