Azure Front Door ルート設定でHTTPリダイレクト

2020-04-26Azure,Front Door

Azure Front Door ルートのHTTPプロトコル関連の設定についてまとめてみました。
ルート設定内容でのHTTPからHTTPSへのリダイレクト時の挙動がどう変わるのかをまとめています。

Azure Front Doorのルート設定を使うとHTTPアクセスをHTTPSにリダイレクトしたり、HTTPSを終端して配信元(バックエンド)への転送をHTTP化できます。
ルート設定のリダイレクト設定や転送プロトコルの設定を組み合わせで動作がどう変わるのかを纏めてみました。

    • ルート設定内でHTTPプロトコルに関する内容確認
    • リダイレクト、転送プロトコル設定の組み合わせによる動作確認

※Azure Front DoorはStandardを利用しています。

スポンサーリンク

Azure Front DoorルートでHTTPプロトコル(HTTPリダイレクト)を設定

Azure Front Doorの概要や作成手順

概要やデプロイ手順についてはこちらに纏めています。

検証構成

今回は以下の構成で検証しています。
Windowsの仮想マシン(Azure VM)上でIISを起動しWebサーバーとしています。
WebサーバーはHTTPのみを受信します。

※配信元にはLoad BalancerのパブリックIPを指定しています。

ルールにHTTPプロトコルの設定がある

Front doorのルールに受信したHTTP プロトコルの設定があります。

要求とルート構成のマッチング方法

HTTPプロトコルに関して3つの設定があります。

    • 受け入れ済みプロトコル:アクセスを許可するプロトコルの設定
    • リダイレクト:HTTPアクセスをHTTPSにリダイレクトするかの設定
    • 転送プロトコル:配信元(バックエンド)へ転送する際のプロトコル
設定確認
左側のメニューでフロントドアマネージャーを選択します。
ルートを選択します。
Azure Front Doorのフロントドアマネージャー
ルートの設定画面です。
受け入れ済みプロトコル、リダイレクト、転送プロトコルの設定が確認出来ます。
受け入れ済みプロトコルではHTTP、HTTPS、両方が選択できます。
Azure Front Doorのルール設定
Azure Front Doorの受け入れ済みプロトコル

デフォルト設定でアクセス確認

デフォルトでは以下の設定になっています。

    • 受け入れ済みプロトコル:HTTPとHTTPS
    • リダイレクト:チェックあり(HTTPをHTTPSにリダイレクト)
    • 転送プロトコル:受信した要求を一致させる

この設定の場合には以下の挙動になります。

    • HTTPアクセスはHTTPSにリダイレクトされる
    • 配信元(バックエンド)には受信したHTTPプロトコルで転送される

HTTPSにリダイレクトされるため、配信元(バックエンド)へはすべてHTTPSで転送されます。
バックエンドのWebサーバはHTTPしか受信出来ない状態ですので通信エラーとなります。

アクセス確認
HTTP、HTTPSどちらでアクセスした場合もエラーとなります。

リダイレクト設定のチェックを外す

リダイレクト設定のチェックを外してみます。

    • 受け入れ済みプロトコル:HTTPとHTTPS
    • リダイレクト:チェックなし
    • 転送プロトコル:受信した要求を一致させる

この設定の場合には以下の挙動になります。

    • HTTPアクセスはHTTPSにリダイレクトされない
    • HTTPアクセスで来た場合にはHTTPで、HTTPSでアクセスが来た場合にはHTTPSで配信元(バックエンド)に転送される

配信元への転送がHTTPにリダイレクトされません。
HTTPで受信した場合のみ応答出来る状態になります。

アクセス確認
リダイレクトのチェックを外して設定を更新します。
HTTPアクセス時のみ配信元(バックエンド)のコンテンツが表示されます。
HTTPSへのリダイレクトが行われない為、保護されてない通信(HTTP)となります。
【HTTPSアクセス時】

【HTTPアクセス時】

リダイレクトしない状態で転送プロトコルをHTTPに変更

リダイレクト設定のチェックを外した状態で転送プロトコルをHTTPに変更します。

    • 受け入れ済みプロトコル:HTTPとHTTPS
    • リダイレクト:チェックなし
    • 転送プロトコル:HTTP

この設定の場合には以下の挙動になります。

    • HTTPアクセスはHTTPSにリダイレクトされない
    • HTTPSアクセス、HTTPアクセス共に配信元(バックエンド)へHTTPで転送される

配信元への転送がHTTPにリダイレクトされます。
HTTPS、HTTPどちらで受信した場合も応答出来る状態になります。

アクセス確認
リダイレクトのチェックは外したままとします。
転送プロトコルを"HTTPのみ"として設定を更新します。
Azure Front Doorのリダイレクト設定

HTTP、HTTPSアクセス時ともに配信元(バックエンド)のコンテンツが表示されます。
HTTPSへのリダイレクトが行われない為、HTTPでアクセスした場合は保護されてない通信(HTTP)となります。

リダイレクトする状態で転送プロトコルをHTTPとする

転送プロトコルをHTTPにした状態でリダイレクト設定のチェックを入れます。

    • 受け入れ済みプロトコル:HTTPとHTTPS
    • リダイレクト:チェックあり(HTTPをHTTPSにリダイレクト)
    • 転送プロトコル:HTTP

この設定の場合には以下の挙動になります。

    • HTTPアクセスはHTTPSにリダイレクトされる
    • HTTPSアクセス、HTTPアクセス共に配信元(バックエンド)へHTTPで転送される

配信元への転送がHTTPにリダイレクトされます。
HTTPS、HTTPどちらで受信した場合も応答出来る状態になります。
HTTPアクセスはHTTPSへリダイレクトされるため共にHTTPSでのアクセスとなります。

アクセス確認
リダイレクト設定のチェックを入れます。
転送プロトコルを"HTTPのみ"としたまま設定を更新します。
Azure Front Doorのリダイレクト設定と転送プロトコル
HTTP、HTTPSアクセス時ともに配信元(バックエンド)のコンテンツが表示されます。
HTTPSへのリダイレクトが行われる、HTTPでアクセスした場合でもHTTPSで通信出来る状態となります。

—広告—

まとめ

Azure Front doorでHTTPSを終端し、配信元(バックエンド)にHTTP化して転送する場合は以下の挙動となりました。
Azure Front doorでHTTPSを終端する設定にする場合にはリダイレクト設定にチェックを入れて、転送プロトコルをHTTPのみにすれば良さそうです。

設定 HTTPS HTTP
リダイレクト:チェックあり
転送プロトコル:受信した要求を一致させる
× ×
リダイレクト:チェックなし
転送プロトコル:受信した要求を一致させる
× 〇(HTTP)
リダイレクト:チェックなし
転送プロトコル:HTTPのみ
〇(HTTPS) 〇(HTTP)
リダイレクト:チェックあり
転送プロトコル:HTTPのみ
〇(HTTPS) 〇(HTTPS)

HTTP→HTTPSへのリダイレクトはルールエンジンでも実現可能です。
こちらについては下記記事に記載しておりますので併せて見て頂ければと。

Azure Front doorの配信元(バックエンド)の正常性確認についてはこちらに纏めています。

スポンサーリンク