Azure Front Door と URL rewrite を使ってみた

## 前説
Azure Front Door に興味がわきましたので、早速使ってみました。どういうサービスなのかドキュメントを読んでみたのですが分かりにくいですね。例えば[オフィシャルサイト](https://azure.microsoft.com/ja-jp/services/frontdoor/)にはこう書いています。

「グローバルなアプリケーションを高速にデリバリーするためのセキュリティで保護されたスケーラブルなエントリ ポイント」

続けて書かれている機能の説明を読んでもいまいちピンときませんね。Application Gateway との違いは？色々な疑問を解消するために使ってみました。

## Azure Front Door Service の作成

Azure Front Door の作成は次の 3 ステップで行います。窓口を作って、裏側の接続先の定義を作って、最後に窓口から裏側の接続先への転送ルールを作ります。分かりやすいですね。

Step 1. 窓口 (Frontend) の作成
Step 2. 裏側の接続先 (Backend Pool) の作成
Step 3. 転送先ルールの作成

### Step 1. 窓口 (Frontend) の作成
##### 1. Step 1 の右上にある ＋ をクリック
ここでサービスの入り口を作ります。指定した URL にアクセスしてきたときに、後で設定する Backend に転送します。
![fd01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/5fa03c29-a017-aa1f-c1d3-982cfef3dbf1.png)

##### 2. ホスト名の設定
アドレスとなるホスト名を指定します。
![fd02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/2e24f13d-e83d-cdf1-6529-dbd4f447f5a5.png)

### Step 2. 裏側の接続先 (Backend Pool) の作成
次に呼び出し先である Backend pool の設定をします。
##### 3. Step 2 の右上にある ＋ をクリック
![fd03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/fbc965d9-5a03-a45d-63e7-e49b0ffa90dc.png)

##### 4. Backend Host Type の選択
呼び出し先となる Azure Service を選びます。以下のように様々なサービスを選ぶことが出来ます。
![fd04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/75125dda-cdd2-406a-8a29-e8b0b99a7dd5.png)

##### 5. Backend の設定
今回は App Service を選びましたので、実際に呼び出すホスト名を指定します。
（今回はテクニカルドキュメントの検索ポータルを指定してみました。）
![fd05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/7595a676-2896-4d1f-970d-d48a7045f4a7.png)

##### 6. Backend pool の設定
複数の Backend を Pool として定義してロードバランスの設定をすることが出来ます。ヘルスチェックの定義などを行います。
![fd06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/e7238afa-5ac1-40d6-5780-e53c7bc47839.png)

### Step 3. 転送先ルールの作成
最後に転送、リダイレクトなどルールを細かく設定します。
##### 7. Step 3 の右上の ＋ をクリック
![fd07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/689d5ce9-2841-d454-e435-80f4ac521ecf.png)

##### 8. ルールを設定
パスのパターンマッチによるルーティングや、HTTP/HTTPS のプロトコルリダイレクト、Forward か Redirect かの選択が出来ます。
![fd08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/0cbc5987-18f5-a17b-3164-af5d7eea0220.png)

##### 9. サービスの作成
**Review + Create** をクリックして、内容に問題が無ければ再度 **Create** をクリック
![fd09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/6ba860db-faa8-a867-55be-d7cc96debdbe.png)

## Azure Front Door Service の動作確認
##### 1. Backend URL 呼び出し
接続先に指定した Backend URL に直接アクセスして表示されることを確認します。
![fd10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/7d85870a-dc75-5317-bb52-69c00fb2b5fa.png)

##### 2. Frontend URL 呼び出し
窓口に指定した URL から同じ画面が表示されることを確認します。
![fd11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/e08180a0-5d61-c839-5bc5-3ba95e4d6a22.png)

##### 3. 転送先ルールの変更
次に転送先ルールを変更して、URL リライトの動作を確認します。
**Pattern to match** に **/prisma** を入力し、**URL rewrite** を **Enabled** に修正します。
**Custom forwarding path** に **"/"** を入力して **Update** をクリック。
そして、Front Door Designer の画面で **Save** をクリックします。
![fd12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/d7973755-7632-93aa-c2ee-907738760974.png)

##### 4. 転送先ルールの動作確認
URL に上記で設定した**/prisma** を追加したときに、正しくトップページが表示されることを確認します。URL リライトの設定はややこしいのですが、以下のドキュメントが参考になりました。

[Azure Front Door Documentation: Concepts-URL rewrite](https://docs.microsoft.com/en-us/azure/frontdoor/front-door-url-rewrite)
![fd13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131935/2441d48f-d847-8541-31a2-b833482df335.png)

## まとめ
Azure Front Door はあらゆる Azure Frontend のサービス URL を簡単にカスタマイズしてエンドユーザに提供できる便利なサービスです。是非、ご活用下さい。