[Azure] Application Gateway v1 で構築検証してみる（E2E TLS/パスベース規則）③

Application Gatewayの構築検証記事③です。
第2回までで、Application Gatewayの作成とルール①の設定について記載しました。
　[1回目：構築する構成図と事前準備](https://qiita.com/ninob/items/e8d883a69cb4069abee1)
　[2回目：Application Gatewayの作成とエンドツーエンドTLSの設定](https://qiita.com/ninob/items/0d1f681f4edfce5bf882)

第3回の今回は、ルール②の設定でパスベースの規則の設定を行います。（下図赤枠）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/d460a792-9018-3011-7e8c-3bd5cf7cf1cb.png)

## パスベース規則の追加
#### ■ バックエンドプールの追加
まずは、バックエンドプールとして、猫システムを追加します。
設定⇒バックエンドプールメニューから「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/e22fd613-588e-b8f6-b0aa-1191f135f64c.png)
猫システムのバックエンドプールを追加し、画面下部の「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/a76da7e7-dfb2-5164-7c6e-003a6b058f3c.png)
次にダミーのバックエンドプールを追加します。

:::note info
パスベース規則では、デフォルトのバックエンドプールを指定する必要があります。
:::
想定していないパスはデフォルトのバックエンドプールに飛ぶため、仮にそのようなアクセスはどちらのシステムにも飛ばしたくないという要件を想定します。
その場合、ダミーのバックエンドプールを作成し、Azureで予約済みのアドレスを指定しました。
※今回は、Application Gateway用サブネットの頭のIPを指定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/996eb3ee-5448-6f83-8974-e15fcb04b6fd.png)
バックエンドプールが追加されたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/f0d4584d-c77d-618a-ebcc-63eea8183b59.png)

#### ■ HTTP設定の追加
今回の規則はバックエンドサーバに対してHTTP通信をさせるため、HTTP設定を追加します。
設定⇒HTTP設定メニューより、「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/27b0b5d8-746e-2e47-4c52-6255d99d67a6.png)
HTTP通信の設定を行い、画面下部の「保存」をクリック
※必要に応じて「Cookieベースのアフィニティ」や「カスタムプローブの使用」を設定します。（第2回参照）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/70fade19-c14b-d6ab-ce09-49e9879c53a3.png)
設定が追加されたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/23e4d176-7bd6-14dc-6bf4-76b80ac87dbb.png)

#### ■ リスナーの追加
リスナー（クライアントからの要求規則）を追加します。
設定⇒リスナーメニューから「リスナーの追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/113c6b79-aff0-eb40-425f-31a7daf48c03.png)
"HTTPで「animals.test.co.jp」に対するアクセスを処理する"設定として入力し、画面下部の「追加」をクリック
※赤枠の"エラーページのURL"の設定は、後述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/75b286b6-aecd-2711-4c07-5d825ca43e6e.png)
設定が追加されたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ad11739f-2903-2138-06dd-5247437432b0.png)

#### ■ 要求ルーティングルールの追加（パスベース規則の追加）
いよいよパスベースの規則を設定します。
設定⇒ルールメニューより「要求ルーティングルール」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/dfc3db23-3f61-6130-be03-9fc19968733a.png)
ルーティング規則の名前と、先ほど作成したリスナーを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ee8d3aa7-eb36-b3f8-388b-4fe5bc45c1f0.png)
「バックエンドターゲット」タブに移り、デフォルトの設定として、ダミーのバックエンドプールを指定します。
"パスベースの規則を作成するには複数のターゲットを追加します"の文章をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/b947445a-2916-1a22-6166-8186ce524bcf.png)
ここでパスベースの規則を入力します。
まずは「/dogs/」のパスは犬システムへ分散させる規則を入力し、画面下部の「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/7ae124c4-7d25-12c1-3212-5140d60de5a4.png)
「/cats/」のパスは猫システムへ分散させる規則を入力し、画面下部の「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/cbb41eae-a70b-d45a-a34c-ea930fce4f3b.png)
ルール設定が完了したら、画面下部の「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/6e4be913-2326-81c8-7ed0-c36889afa305.png)
これで設定完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/aafccd21-3003-0db0-ec36-e241d9f398b1.png)

## 結果確認
設定の結果確認を行います。
監視⇒バックエンド正常性をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/48caafbf-ecb0-d192-ed2c-24f4ae72b6ea.png)
ダミーのバックエンドに設定した、Azureの予約アドレス（10.5.0.80）はエラーになっていますが、
それ以外は「健全」であることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/b6b51455-4c47-30e5-ffab-26df009e325a.png)
犬用URLへアクセスしてみます。（http://animals.test.co.jp/dogs/start.htm）
正常に犬画像が表示されたことを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/35fc2a6a-6c35-a4fa-c400-2fa0cff979e4.png)
猫用URLへアクセスしてみます。（http://animals.test.co.jp/cats/start.htm）
正常に猫画像が表示されたことを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ee5c35bc-abd1-cc17-6635-a906c6391dbf.png)

## エラーページの設定
エラーページを設定しないと、指定パス以外はAzure予約アドレスに飛ばすため、「502 サーバーエラー」になります。
（http://animals.test.co.jpやhttp://animals.test.co.jp/birds/start.htm等）
きちんとエラーページに飛ばす場合の設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/6822cce4-2097-b741-69bb-132a42b09851.png)
まずはエラーページを設定します。
ストレージアカウントにエラーページを格納し、そのパスを指定します。
今回は、単純に以下の文章のみを表示させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/ca79cf1c-e5ab-c74f-bea8-030f371f21fc.png)

新しいコンテナを作成します。（ストレージアカウントの作成手順は割愛します）
このときパブリックアクセスレベルの設定に注意ください。
Application Gatewayからアクセスできるように設定する必要があります。（[Blob]もしくは[コンテナー]に設定します）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/44113344-1bc8-9e71-3b28-1d2421873347.png)
エラーページのHTMLファイルを作成し、アップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/13bb2386-1659-9d52-f50a-a763cf6494c6.png)
アップロードしたファイルを選択するとプロパティが表示されるため、URLをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/f0807383-92da-61ea-a09f-cc9128a63e62.png)
リスナーの設定で、"エラーページのURL"を「はい」で有効化し、
ストレージアカウントに格納したHTMLファイルのURLを設定すれば完了です。
※必要に応じて、エラーコード別に表示ページを変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/acb60e1e-835c-e73e-2318-5a0a225f28fc.png)
結果確認です。
指定パス以外にアクセスした場合、指定したエラーページが表示されることを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139241/1a0cc4ce-bcf3-b712-d04c-e93bfa762ff1.png)

これでApplication Gatewayの設定は完了です。
次回は運用時のTIPSをご紹介します。
第4回URL：https://qiita.com/ninob/items/0308e5aff4f12eaebf50