こんにちは、伊藤です。今回は、Application Gatewayのカスタムエラーページを構成する手順を紹介します。
Application Gatewayではデフォルトのエラーページが用意されていますが、エラー番号とエラー内容が簡易に表示されるにとどまっています。そこで、カスタムエラーページを構成していきます。
Application Gatewayの作成
Application Gatewayの解説は過去記事で紹介されているので、参考にしてみてください。
参考:https://tech-lab.sios.jp/archives/30628
Application Gatewayを作成します。今回は以下の設定とします。




ルーティング規則(リスナー)ではカスタムエラーページを設定する項目があり、リスナーごとにカスタムエラーページを設定できます。今回は、Application Gateway全体(グローバルレベル)でカスタムエラーページを設定するため、ここでは未設定とします。


Application Gatewayの作成後、概要のフロントエンドパブリックIPアドレスを確認し、アクセスします。バックエンドターゲットが存在しないのでエラーとなり、デフォルトのエラーページが表示されます。

ストレージアカウントの作成
カスタムエラーページを配置するストレージアカウントを作成します。今回は以下の設定とします。





ストレージアカウントの作成後、コンテナ―にてカスタムエラーページを配置します。
「errorpage」というコンテナーを匿名アクセスレベル「BLOB」で新規作成し、その中にhtmlファイル(502.html)を作成します。カスタムエラーページの条件は以下を参考にしてみてください。
参考:https://learn.microsoft.com/ja-jp/azure/application-gateway/custom-error


502.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>エラー 502 - 不正なゲートウェイ</title>
</head>
<body>
<div class="error-container">
<h1>エラー 502 - 不正なゲートウェイ</h1>
<p>申し訳ありませんが、サーバーへの接続に問題が発生しました。</p>
</div>
</body>
</html>
htmlファイルのプロパティを開いてURLを確認し、アクセスします。アクセスでき、エラーページが表示されることを確認します。



Application Gatewayのカスタムエラーページ設定
Azure PowerShell を使用して、カスタム エラー ページ(グローバルレベル)を設定します。
$appgw = Get-AzApplicationGateway -Name testgw -ResourceGroupName <resource-group-name>
$updatedgateway = Add-AzApplicationGatewayCustomError -ApplicationGateway $appgw -StatusCode HttpStatus502 -CustomErrorPageUrl "https://testgwerrorpage.blob.core.windows.net/errorpage/502.html"
Set-AzApplicationGateway -ApplicationGateway $appgw
カスタムエラーページの確認は以下のコマンドを実行します。
$appgw = Get-AzApplicationGateway -Name testgw -ResourceGroupName <resource-group-name>
$appgw.CustomErrorConfigurations
カスタムエラーページがすでに設定されており、設定変更したい場合は以下のコマンドを実行します。
$appgw = Get-AzApplicationGateway -Name testgw -ResourceGroupName <resource-group-name>
$updatedgateway = Set-AzApplicationGatewayCustomError -ApplicationGateway $appgw -StatusCode HttpStatus502 -CustomErrorPageUrl "<errorpage-url>"
Set-AzApplicationGateway -ApplicationGateway $appgw
カスタムエラーページを削除する場合は、以下のコマンドを実行します。
$appgw = Get-AzApplicationGateway -Name testgw -ResourceGroupName <resource-group-name>
$updatedgateway = Remove-AzApplicationGatewayCustomError -ApplicationGateway $appgw -StatusCode HttpStatus502
Set-AzApplicationGateway -ApplicationGateway $appgw
参考:https://learn.microsoft.com/ja-jp/powershell/module/az.network/?view=azps-13.3.0#application-gateway
カスタムエラーページの設定後に、Application Gatewayにアクセスします。カスタムエラーページが表示されることを確認します。

ストレージアカウントのネットワーク設定
ここまでのストレージアカウントは、全てのパブリックネットワークアドレスからアクセスが許可されています。そのため、Application Gatewayのサブネットとカスタムエラーページを管理するクライアントPCからのみアクセスできるようにします。
ストレージアカウントの「ネットワーク」を選択すると、パブリックアクセスの設定が表示されます。「Manage」を選択して設定を変更します。

「Enable from selected networks」を選択して特定のネットワークからのアクセスを許可し、許可するネットワークとしてApplication GatewayのサブネットとクライアントPCのIPアドレスを設定し、設定保存します。

アクセス許可されていないIPアドレスからカスタムエラーページのURLにアクセスできないことを確認します。

Application Gatewayのカスタムエラーページ設定を変更する場合は、Azure PowerShell からカスタムエラーページのURLにアクセスできず設定変更に失敗するため、再度全てのパブリックネットワークアドレスからのアクセスを許可してから設定する必要があります。そのため、次のカスタムエラーページ設定を変更せずエラーページの内容を変更する方法が望ましいです。
カスタムエラーページ設定を変更せずエラーページの内容を変更したい場合は、ストレージアカウントにあるhtmlファイルのプロパティから編集することができます。 編集後のhtmlを反映するためには、Application Gatewayで任意の構成更新を実行して、ファイルのキャッシュを手動で更新します。 例えば、新しいリスナーを追加します。



まとめ
今回は、Application Gatewayのカスタムエラーページを構成する手順を紹介しました。
Application Gatewayの設定の参考になれば幸いです。