Azure Front Door ルールのアクション

Azure Front Door のルール セットは、一致条件とアクションを組み合わせたルールで構成されます。 この記事では、Azure Front Door のルール セットで使用できるアクションについて詳しく説明します。 アクションには、一致条件によって識別された要求の種類に適用される動作が定義されています。 Azure Front Door のルール セットでは、1 つのルールに最大 5 つのアクションを含めることができます。

Azure Front Door は、ルール セット アクションでのサーバー変数をサポートしています。

Azure Front Door のルール セットでは、次のアクションを使用できます。

ルート構成のオーバーライド

ルート構成のオーバーライド アクションを使用して、要求に使用する配信元グループまたはキャッシュ構成をオーバーライドします。 ルートに指定されている配信元グループの構成をオーバーライドするか、優先するかを選択できます。 ただし、ルート構成をオーバーライドする場合は常に、キャッシュを構成する必要があります。 それ以外の場合、キャッシュは要求に対して無効になります。

また、次のような特定の要求に対してファイルをキャッシュする方法をオーバーライドすることもできます。

  • 配信元によって指定されたキャッシュ動作をオーバーライドする。
  • クエリ文字列パラメーターを使用して要求のキャッシュ キーを生成する方法。
  • 有効期限 (TTL) 値を使用して、コンテンツがキャッシュに保持される時間を制御する。

プロパティ

プロパティ サポート状況の値
Override origin group (配信元グループのオーバーライド)
  • Yes (はい): 要求に使用する配信元グループを上書きします。
  • No (いいえ): ルートに指定されている配信元グループを使用します。
キャッシュ
  • Enabled (有効): 要求に対して強制的にキャッシュを有効にします。
  • Disabled (無効): 要求に対して強制的にキャッシュを無効にします。

[Override origin group] (配信元グループのオーバーライド)[Yes] (はい) に設定する場合は、次のプロパティを設定します。

プロパティ サポート状況の値
配信元グループ 要求のルーティング先となる配信元グループ。 これは、Front Door エンドポイント ルートに指定された構成よりも優先されます。
転送プロトコル 要求を配信元に転送するときに使用する Front Door のプロトコル。 サポートされる値は、[HTTP のみ]、[HTTPS のみ]、[一致受信要求] です。 これは、Front Door エンドポイント ルートに指定された構成よりも優先されます。

[キャッシュ][有効] に設定する場合は、次のプロパティを設定します。

プロパティ サポート状況の値
クエリ文字列のキャッシュ動作
  • Ignore Query String (クエリ文字列を無視する): キャッシュ キーが生成されるとき、クエリ文字列は考慮されません。 ARM テンプレートで、queryStringCachingBehavior プロパティを IgnoreQueryString に設定します。
  • Use query string (クエリ文字列を使用する): 一意の各 URL には、独自のキャッシュ キーが含まれます。 ARM テンプレートでは、UseQueryStringqueryStringCachingBehavior を使用します。
  • 指定したクエリ文字列を無視する: キャッシュ キーが生成されるとき、パラメーターで指定されたクエリ文字列が除外されます。 ARM テンプレートで、queryStringCachingBehavior プロパティを IgnoreSpecifiedQueryStrings に設定します。
  • 指定したクエリ文字列を含める: キャッシュ キーが生成されるとき、パラメーターで指定されたクエリ文字列が含まれます。 ARM テンプレートで、queryStringBehavior プロパティを IncludeSpecifiedQueryStrings に設定します。
クエリ パラメーター コンマで区切られた、クエリ文字列パラメーターの名前の一覧。 このプロパティは、"クエリ文字列のキャッシュ動作" が、"指定したクエリ文字列を無視する" または "指定したクエリ文字列を含める" に設定されている場合にのみ設定されます。
圧縮
  • 有効: Front Door はエッジのコンテンツを動的に圧縮するため、応答が小さく高速になります。 詳細については、「ファイル圧縮」を参照してください。 ARM テンプレートで、isCompressionEnabled プロパティを Enabled に設定します。
  • 無効にします。 Front Door は圧縮を実行しません。 ARM テンプレートで、isCompressionEnabled プロパティを Disabled に設定します。
キャッシュの動作
  • 配信元を優先: Front Door は常に配信元の応答ヘッダー ディレクティブを優先します。 配信元のディレクティブがない場合、Front Door では、1 日から 3 日までの任意の期間コンテンツをキャッシュします。 ARM テンプレートで、cacheBehavior プロパティを HonorOrigin に設定します。
  • Override always (常にオーバーライド): 配信元から返された TTL 値は、アクションで指定された値でオーバーライドされます。 この動作は、応答がキャッシュ可能な場合にのみ適用されます。 ARM テンプレートで、cacheBehavior プロパティを OverrideAlways に設定します。
  • Override if origin missing (配信元が見つからない場合にオーバーライド): 配信元から TTL 値が返されない場合、TTL は、アクションで指定された値に設定されます。 この動作は、応答がキャッシュ可能な場合にのみ適用されます。 ARM テンプレートで、cacheBehavior プロパティを OverrideIfOriginMissing に設定します。
Cache duration (キャッシュ期間) キャッシュ動作 または Override if origin missing に設定されている場合、これらのフィールドでは、使用するキャッシュ期間を指定する必要があります。 最大期間は 366 日です。 値が 0 秒の場合は、CDN はコンテンツをキャッシュしますが、要求ごとに送信元のサーバーを再検証する必要があります。 このプロパティは、"キャッシュの動作" が "Override always" (常にオーバーライド) または "Override if origin missing" (配信元が見つからない場合にオーバーライド) に設定されている場合にのみ設定されます。
  • Azure portal: 曜日、時間、分、秒を指定します。
  • ARM テンプレート: cacheDuration を使用して、d.hh:mm:ss の形式で期間を指定します。

この例では、Front Door エンドポイント ルートの構成にかかわらず、マッチしたすべての要求を MyOriginGroup という配信元グループにルーティングします。

Portal screenshot showing origin group override action.

この例では、キャッシュ キーを設定して、customerId という名前のクエリ文字列パラメーターを含めます。 圧縮が有効になり、配信元のキャッシュ ポリシーが受け入れられます。

Portal screenshot showing cache key query string action.

この例では、キャッシュ期間がまだ指定されていない一致する要求の場合、キャッシュの有効期限を 6 時間にオーバーライドします。 Front Door は、キャッシュ キーを決定するときにクエリ文字列を無視し、圧縮が有効になります。

Portal screenshot showing cache expiration action.

要求ヘッダーの変更

要求ヘッダーの変更アクションを使用して、配信元に送信されるときに、ヘッダーを変更します。

Properties

プロパティ サポート状況の値
演算子
  • 追加: 指定されたヘッダーが、指定された値で要求に追加されます。 ヘッダーが既に存在する場合は、文字列の連結を使用して、既存のヘッダー値に値が追加されます。 区切り記号は追加されません。 ARM テンプレートでは、AppendheaderAction を使用します。
  • 上書き: 指定されたヘッダーが、指定された値で要求に追加されます。 ヘッダーが既に存在する場合、指定された値によって既存の値が上書きされます。 ARM テンプレートでは、OverwriteheaderAction を使用します。
  • 削除: ルールに指定されたヘッダーがある場合、ヘッダーは要求から削除されます。 ARM テンプレートでは、DeleteheaderAction を使用します。
ヘッダー名 変更するヘッダーの名前。
ヘッダー値 追加または上書きする値。

この例では、MyRequestHeader 要求ヘッダーに値 AdditionalValue を追加します。 配信元で応答ヘッダーの値を ValueSetByClient に設定した場合、このアクションが適用されると、要求ヘッダーの値は ValueSetByClientAdditionalValue になります。

Portal screenshot showing modify request header action.

応答ヘッダーの変更

応答ヘッダーの変更アクションを使用して、応答に存在するヘッダーをクライアントに返す前に変更します。

Properties

プロパティ サポート状況の値
演算子
  • 追加: 指定されたヘッダーが、指定された値で応答に追加されます。 ヘッダーが既に存在する場合は、文字列の連結を使用して、既存のヘッダー値に値が追加されます。 区切り記号は追加されません。 ARM テンプレートでは、AppendheaderAction を使用します。
  • 上書き: 指定されたヘッダーが、指定された値で応答に追加されます。 ヘッダーが既に存在する場合、指定された値によって既存の値が上書きされます。 ARM テンプレートでは、OverwriteheaderAction を使用します。
  • 削除: ルールに指定されたヘッダーがある場合、ヘッダーは応答から削除されます。 ARM テンプレートでは、DeleteheaderAction を使用します。
ヘッダー名 変更するヘッダーの名前。
ヘッダー値 追加または上書きする値。

この例では、クライアントに返される前に、名前が X-Powered-By の持つヘッダーを応答から削除します。

Portal screenshot showing modify response header action.

URL リダイレクト

URL リダイレクト アクションを使用して、クライアントを新しい URL にリダイレクトします。 クライアントには、フロント ドアからのリダイレクト応答が送信されます。

Properties

プロパティ サポート状況の値
リダイレクトの種類 要求元に返される応答タイプ。
  • Azure portal: 検出済み (302)、移動済み (301)、一時リダイレクト (307)、永続的なリダイレクト (308)。
  • ARM テンプレート: FoundMovedTemporaryRedirectPermanentRedirect
プロトコルをリダイレクトします
  • Azure portal: Match RequestHTTPHTTPS
  • ARM テンプレート: MatchRequestHttpHttps
宛先ホスト 要求のリダイレクト先のホスト名。 受信ホストを保持するには、空のままにします。
宛先のパス リダイレクトで使用するパス。 先頭に / を含めます。 受信パスを保持するには、空のままにします。
クエリ文字列 リダイレクトで使用されるクエリ文字列。 先頭に ? を含めないでください。 受信クエリ文字列を保持するには、空のままにします。
宛先フラグメント リダイレクトで使用するフラグメント。 受信フラグメントを保持するには、空のままにします。

この例では、フラグメントを保持しながら、要求を https://contoso.com/exampleredirection?clientIp={client_ip} にリダイレクトします。 HTTP 一時リダイレクト (307) が使用されます。 client_ip{client_ip}を使用すると、URL 内の {client_ip} トークンの代わりに、クライアントの IP アドレスが使用されます。

Portal screenshot showing URL redirect action.

URL 書き換え

URL 書き換えアクションを使用して、配信元に送信中の要求のパスを書き換えます。

Properties

プロパティ サポート状況の値
ソース パターン 置換する URL パス内のソース パターンを定義します。 現在、ソース パターンではプレフィックスに基づく一致が使用されます。 すべての URL パスを一致させるには、ソース パターン値としてスラッシュ ( / ) を使用します。
宛先 書き換えに使用する宛先パスを定義します。 宛先のパスは、ソース パターンを上書きします。
一致しないパスを保持する [はい] に設定された場合、ソース パターンの後の残りのパスが新しい宛先パスに追加されます。

この例では、すべての要求をパス /redirection に書き換え、パスの残りの部分は保持しません。

Portal screenshot showing URL rewrite action.

Azure Front Door (クラシック) のルール エンジンは、一致条件と関連するアクションを含む最大 25 個のルールで構成できます。 この記事では、ルールで定義できる各アクションについて詳しく説明します。

アクションでは、1 つの一致条件または一致条件のセットと一致する要求の種類に適用される動作が定義されています。 ルール エンジンの構成では、1 つのルールで最大 10 個の一致条件と 5 個のアクションを定義できます。 "ルーティングの構成をオーバーライドする" アクションは、1 つのルールで 1 つだけ使用できます。

ルール エンジンの構成では、次のアクションを使用できます。

要求ヘッダーの変更

バックエンドに送信される要求に含まれるヘッダーを変更するには、これらのアクションを使います。

必須フィールド

アクション HTTP ヘッダー名
Append このオプションが選択され、ルールが一致する場合、ヘッダー名に指定されたヘッダーが、指定された値で要求に追加されます。 ヘッダーが既に存在する場合、値は既存の値に追加されます。 String
Overwrite このオプションが選択され、ルールが一致する場合、ヘッダー名に指定されたヘッダーが、指定された値で要求に追加されます。 ヘッダーが既に存在する場合、指定された値によって既存の値が上書きされます。 String
削除 一致するルールによってこのオプションが選択され、ルールで指定されたヘッダーが存在する場合、ヘッダーは要求から削除されます。 String

応答ヘッダーの変更

クライアントに返される応答に含まれるヘッダーを変更するには、これらのアクションを使います。

必須フィールド

アクション HTTP ヘッダー名
Append このオプションが選択され、ルールが一致する場合、ヘッダー名に指定されたヘッダーが、指定されたを使用して応答に追加されます。 ヘッダーが既に存在する場合、は既存の値に追加されます。 String
Overwrite このオプションが選択され、ルールが一致する場合、ヘッダー名に指定されたヘッダーが、指定されたを使用して応答に追加されます。 ヘッダーが既に存在する場合、によって既存の値が上書きされます。 String
削除 一致するルールによってこのオプションが選ばれ、ルールで指定されているヘッダーが存在する場合、ヘッダーは応答から削除されます。 String

ルート構成のオーバーライド

ルートの種類: リダイレクト

クライアントを新しい URL にリダイレクトするには、これらのアクションを使います。

必須フィールド

フィールド 説明
リダイレクトの種類 リダイレクトは、ある URL から別の URL にユーザーやクライアントを送信する方法です。 リダイレクトの種類により、クライアントがリダイレクトの目的を理解するために使われる状態コードが設定されます。

次のリダイレクト状態コードを選択できます: 検出 (302)、移動 (301)、一時リダイレクト (307)、永続的なリダイレクト (308)。
プロトコルをリダイレクトします 着信要求に従ってプロトコルを維持するか、リダイレクトのために新しいプロトコルを定義します。 たとえば、HTTP から HTTPS へのリダイレクトの場合は "HTTPS" を選びます。
宛先ホスト リダイレクトのために URL のホスト名を変更する場合はこれを設定します。設定しない場合は受信した要求のホスト名が保持されます。
宛先のパス 受信要求に従ってパスを保持するか、リダイレクトのために URL のパスを更新します。
クエリ文字列 着信要求 URL の既存のクエリ文字列を置き換える場合はこれを設定します。設定しない場合はクエリ文字列の元のセットが保持されます。
宛先フラグメント 宛先フラグメントは URL の '#' より後の部分のことで、通常はブラウザーがページの特定のセクションに移動するために使用します。 リダイレクト URL にフラグメントを追加するには、これを設定します。

ルートの種類: 転送

クライアントを新しい URL に転送するには、これらのアクションを使います。 これらのアクションには、URL 書き換えとキャッシュのためのサブアクションも含まれています。

フィールド 説明
バックエンド プール オーバーライドして要求を処理するバックエンド プールを選択します。これにより、現在 Front Door プロファイルにあるすべての構成済みバックエンド プールも表示されます。
転送プロトコル 要求をバックエンドに転送するため、または着信要求からのプロトコルと一致させるために使用するプロトコル。
URL 書き換え バックエンドに転送するための URL 書き換え要求を作成するときに使用するパス。
キャッシュ このルーティング規則のキャッシュを有効にします。 有効にすると、Azure Front Door によって静的なコンテンツがキャッシュされます。

URL 書き換え

この設定を使用して、バックエンドに転送する要求を作成するときに使用するオプションのカスタム転送パスを構成します。

フィールド 説明
カスタム転送パス 要求の転送先のパスを定義します。

キャッシュ

これらの設定を使用して、クエリ文字列を含む要求に対してファイルをキャッシュする方法を制御します。 すべてのパラメーターまたは選択したパラメーターに基づいてコンテンツをキャッシュするかどうかも制御します。 追加の設定を使用して有効期限 (TTL) 値を上書きすると、コンテンツがキャッシュに保持される時間を制御できます。 アクションとしてキャッシュを強制するには、キャッシュ フィールドを "Enabled" に設定します。キャッシュを強制すると、次のオプションが表示されます。

キャッシュの動作 説明
クエリ文字列を無視 資産がキャッシュされると、キャッシュされた資産の有効期限が切れるまで、続くすべての要求でクエリ文字列が無視されます。
一意の URL をすべてキャッシュ クエリ文字列を含む一意の URL が指定された各要求は、独自のキャッシュがある一意の資産として扱われます。
Ignore specified query strings (指定されたクエリ文字列を無視する) [クエリ パラメーター] 設定に一覧表示されている要求 URL クエリ文字列は、キャッシュ対象として無視されます。
Include specified query strings (指定されたクエリ文字列を含める) [クエリ パラメーター] 設定に一覧表示されている要求 URL クエリ文字列は、キャッシュ対象として使用されます。
追加フィールド 説明
動的な圧縮 Front Door はエッジのコンテンツを動的に圧縮できるため、応答が小さく高速になります。
クエリ パラメーター キャッシュの基礎として使用する、許可または禁止するパラメーターのコンマ区切りのリスト。
既定のキャッシュ期間を使用する Azure Front Door の既定のキャッシュ期間を使うように設定するか、または元の応答ディレクティブを無視するキャッシュ期間を定義します。

次のステップ