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 未満であることを確認します。

この HTML ファイルには、内部または外部のイメージ/CSS を参照できます。 外部から参照されるリソースには、パブリック アクセスできる絶対 URL を使用します。 base64 でエンコードされたインライン イメージ、JavaScript、または CSS を使用する場合は、HTML ファイルのサイズに注意してください。

Note

  • Azure エコシステム内では、エラー ページをホストするために Azure Blob Storage アカウントまたは仮想マシンを使用する必要があります。 現在、Azure CDN サービスによってフロントされたストレージ アカウントはサポートされていないため、Blob ストレージには直接アクセスできる必要があります。
  • また、エラー ページをリモートの任意の場所でホストすることもできます。
  • 相対リンクはサポートされていません。

しくみ

アプリケーション ゲートウェイの構成でエラー ページを指定すると、ゲートウェイはインターネット経由で HTML ページへの接続を確認します。 その後、ローカル キャッシュにファイルをダウンロードします。

クライアントがエラーに直面すると、アプリケーション ゲートウェイは応答コードとその HTML ページを返します。 外部から参照されるすべてのリソース (イメージ、JavaScript、CSS ファイルなど) は、クライアントによって直接フェッチされます。

アプリケーション ゲートウェイは、新しいバージョンをフェッチするためにソース ファイルの場所を定期的にチェックしません。 ゲートウェイで任意の構成更新を実行して、ファイルのキャッシュを手動で更新できます。 たとえば、エラー URL をページ 1 からページ 2 に変更してから、ページ 1 に戻したり、新しいリスナーを追加したりします。

ポータル構成

リスナー固有のカスタム エラー ページを構成する手順:

  1. ポータルで Application Gateway に移動し、必要なリソースを選択します。

  2. リスナー を選択し、エラー ページを指定する特定のリスナーに移動します。

  3. カスタム エラー ページ セクションで、必要な状態コードにパブリックにアクセスできる URL を指定します。

  4. [保存] を選択します。

    Screenshot of Application Gateway custom error page.

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 のバックエンドの正常性、診断ログ、およびメトリック」を参照してください。