Application Gateway のカスタム エラー ページを作成する
Application Gateway を使用すると、既定のエラー ページを表示する代わりに、カスタマイズされたエラー ページを作成できます。 さまざまな応答コードに関連するエラーに対して、ブランド化とレイアウトを使用できます。 カスタム エラー ページを設定するシナリオには
- 502 Bad Gateway 応答コードの メンテナンスまたは状態ページを表示しています。 これは、スケジュールされたメンテナンス中にトラフィックをルーティングするバックエンド サーバーがアプリケーション ゲートウェイに存在しない場合や、バックエンド プール サーバーで予期しない問題が発生した場合に便利です。
- WAF が防止モードで、悪意のあるトラフィックをブロックするときに発生する 403 Forbidden 応答コードのカスタマイズされた 未承認アクセス ページ を表示します。
- 問題が発生した場合の連絡先の詳細を含む会社ブランドのページを表示します。
サポートされている応答コード
カスタム エラー ページは、次の応答コードでサポートされています:
応答コード | 説明 |
---|---|
400 | 要求が正しくありません (プレビュー段階) |
403 | 許可されていません |
405 | メソッドを使用できません (プレビュー段階) |
408 | 要求のタイムアウト (プレビュー段階) |
500 | 内部サーバー エラー (プレビュー段階) |
502 | Bad gateway |
503 | サービスを利用できません (プレビュー段階) |
504 | ゲートウェイのタイムアウト (プレビュー段階) |
Note
- API バージョン 2022-09-01 以降を使用して、新しい応答コード (プレビュー段階) のエラー ページを構成する必要があります。
- 応答コード 404 (ページが見つかりません) は現在サポートされていません。
- Application Gateway によって生成された応答コードのカスタム エラー ページが表示されます。 バックエンド サーバーから発生したエラーは、そのままクライアントに渡されます。
構成レベル
カスタム エラー ページは、グローバル レベルまたはリスナー レベルで定義できます:
- グローバル レベル - グローバル レベルで設定されたエラー ページは、そのアプリケーション ゲートウェイのすべてのリスナーに適用されます。 Azure portal を使用した構成は現在サポートされていません。
- リスナー レベル - リスナー レベルのエラー ページを使用すると、そのリスナーによって提供されるアプリケーションのエラー ページを細かく制御できます。
Note
ゲートウェイにグローバル レベルのエラー ページとリスナー レベルのエラー ページを組み合わせて使用する場合は、そのリスナーに必要なすべての応答コードの URL を明示的にメンションする必要があります。 リスナー固有の構成は、そのリスナーに適用できる前述のグローバル構成をすべてオーバーライドします。
必要条件
カスタム エラー ページを作成するには
- カスタム エラー ページが必要な応答コードを認識します。
- HTML ページの対応するリモートの場所 (URL) を認識します。 これは、パブリックにアクセス可能なファイルである必要があります。
- エラー ページがパブリックにアクセス可能であることを確認し、200 応答を返します。
- エラー ページが *.htm または *.html 拡張型であることを確認します。
- ページ サイズが 1 MB 未満であることを確認します。
- Azure BLOB ストレージ アカウントを使用する場合は、ネットワーク アクセス設定が "すべてのネットワークから有効" に設定されていることを確認します。
この HTML ファイルには、内部または外部のイメージ/CSS を参照できます。 外部から参照されるリソースには、パブリック アクセスできる絶対 URL を使用します。 base64 でエンコードされたインライン イメージ、JavaScript、または CSS を使用する場合は、HTML ファイルのサイズに注意してください。
Note
- Azure エコシステム内では、エラー ページをホストするために Azure Blob Storage アカウントまたは仮想マシンを使用する必要があります。 現在、Azure CDN サービスによってフロントされたストレージ アカウントはサポートされていないため、Blob ストレージには直接アクセスできる必要があります。
- また、エラー ページをリモートの任意の場所でホストすることもできます。
- 相対リンクはサポートされていません。
しくみ
アプリケーション ゲートウェイの構成でエラー ページを指定すると、ゲートウェイはインターネット経由で HTML ページへの接続を確認します。 その後、ローカル キャッシュにファイルをダウンロードします。
クライアントがエラーに直面すると、アプリケーション ゲートウェイは応答コードとその HTML ページを返します。 外部から参照されるすべてのリソース (イメージ、JavaScript、CSS ファイルなど) は、クライアントによって直接フェッチされます。
アプリケーション ゲートウェイは、新しいバージョンをフェッチするためにソース ファイルの場所を定期的にチェックしません。 ゲートウェイで任意の構成更新を実行して、ファイルのキャッシュを手動で更新できます。 たとえば、エラー URL をページ 1 からページ 2 に変更してから、ページ 1 に戻したり、新しいリスナーを追加したりします。
ポータル構成
リスナー固有のカスタム エラー ページを構成する手順:
ポータルで Application Gateway に移動し、必要なリソースを選択します。
リスナー を選択し、エラー ページを指定する特定のリスナーに移動します。
カスタム エラー ページ セクションで、必要な状態コードにパブリックにアクセスできる URL を指定します。
[保存] を選択します。
Azure PowerShell 構成
Azure PowerShell を使用して、カスタム エラー ページを構成できます。 たとえば、グローバル カスタム エラー ページは次のようになります。
$appgw = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>
$updatedgateway = Add-AzApplicationGatewayCustomError -ApplicationGateway $appgw -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"
Set-AzApplicationGateway -ApplicationGateway $appgw
また、リスナー レベルのエラー ページは次のようになります。
$appgw = Get-AzApplicationGateway -Name <app-gateway-name> -ResourceGroupName <resource-group-name>
$listener01 = Get-AzApplicationGatewayHttpListener -Name <listener-name> -ApplicationGateway $appgw
$updatedlistener = Add-AzApplicationGatewayHttpListenerCustomError -HttpListener $listener01 -StatusCode HttpStatus502 -CustomErrorPageUrl "http://<website-url>"
Set-AzApplicationGateway -ApplicationGateway $appgw
詳しくは、「Add-AzApplicationGatewayCustomError」および「Add-AzApplicationGatewayHttpListenerCustomError」をご覧ください。
次のステップ
Application Gateway 診断の詳細については、「Application Gateway のバックエンドの正常性、診断ログ、およびメトリック」を参照してください。