Azure Application Gatewayのカスタムエラーページ設定から更新まで

2020-01-29Application Gateway,Azure,PowerShell/Azure CLI

Application Gateway(アプリケーションゲートウェイ)では自分で準備したカスタムエラーページを表示させることが出来ます。
リスナーにカスタムのエラーページを設定する事でユーザー作成のエラーページを表示する事が出来ます。カスタムエラーページはURL(Blobコンテナー等)を指定します。

バックエンドと疎通が取れない場合は502エラーになりますが、何も設定していない場合はデフォルトのエラーページが表示されます。
システムメンテナンス等でバックエンドのWEBサーバ停止する場合、デフォルトの502エラーページが表示されます。
メンテナンス案内のHTMLをカスタムエラーページに設定すると、デフォルトのエラーページではなくメンテナンス案内を表示する事が出来ます。

Application Gateway(アプリケーションゲートウェイ)のカスタムエラーページ設定を行いました。BLOBコンテナーにアップロードしたHTMLファイルをカスタムエラーページとして表示させます。
併せてAzure PowerShellを使ってカスタムエラーページの設定更新もやってみました。

※2023年1月に加筆修正してます。

スポンサーリンク

Application Gatewayのエラーページについて

Application Gatewayで表示されるデフォルトエラーページ

Azure Application Gateway(アプリケーションゲートウェイ)ではバックエンドと疎通が取れない場合はデフォルトの502エラーページが表示されます。

502エラーの場合

502エラーの場合のデフォルトエラー画面です。
502 Bad Gatewayと表示されます。

カスタムエラーページ設定内容

Application Gateway(アプリケーションゲートウェイ)のカスタムエラーページはリスナーで設定します。

Application Gateway のカスタム エラー ページを作成する

403エラー、502エラーの場合の設定が出来ます。リスナー単位で設定が出来ます。

カスタムエラーページの設定画面

カスタムエラーページの設定箇所です。
リスナーで設定します。
エラーページのURLがカスタムエラーページの設定になります。

Application Gatewayのカスタムエラーページ設定

Application Gateway(アプリケーションゲートウェイ)のカスタムエラーページはURLを指定します。
今回はBlobコンテナーにアップロードしたファイルを指定します。

BLOBコンテナーにエラーページをアップロード

BLOBコンテナーにカスタムエラーページ用のHTMLファイルをアップロードします。
パブリックアクセスが許可されている必要があります。

BLOBコンテナーへアップロード
テスト用のHTMLファイルを準備します。
サンプルのHTMLをcustom-error.htmlとして保存します。
<!doctype html>
<html lang="ja">
<head>
  <meta charset="UTF-8″>
  <title>Sample-Error-Page</title>
</head>
<body>
    <h1>カスタムエラーページですよ</h1>
</body>
</html>
Blobコンテナーでファイルをアップロードします。
アップロードしたファイルのプロパティを選択します。
プロパティにあるURLをコピーしておきます。
エラーページへのアクセスURLとなります。

※ストレージアカウントやBLOBコンテナー(apgw-error-page)は準備済みのものを利用しています。

リスナーにカスタムエラーページを設定

Application Gateway(アプリケーションゲートウェイ)のリスナーにカスタムエラーページを設定します。

カスタムエラーページの設定
リスナーの設定画面でエラーページのURLを”はい”にします。
BLOBコンテナーにアップロードしたファイルのURLを入力し保存します。

※URLへのアクセスが出来ない場合は保存時にエラーとなります。

カスタムエラーページの表示確認

カスタムエラーページが表示されるか確認します。
バックエンドのWEBサーバを停止した状態(502エラーが表示される状態)で確認します。

カスタムエラーページ表示確認
Application Gateway(アプリケーションゲートウェイ)のIP(もしくはURL)へアクセスします。
カスタムエラーページが表示される事が確認出来ます。

Azure PowerShellを使ってカスタムエラーページを更新

Set-AzApplicationGatewayHttpListenerCustomErrorを使う

Azure PowerShellを使ったカスタムエラーページ更新は、リスナー設定更新、Application Gateway(アプリケーションゲートウェイ)の設定更新の2段階で行います。

502エラーのページを更新する場合はステータスコードはHttpStatus502と指定します。

# APGW Custom Error Page Update#パラメータ

$ResourceGroupName = “Application GatewayのRG名"
$APGWName =“Application Gateway名"
$ListenerName = “リスナー名"
$StatusCode = “更新対象のエラーコード(ex;HttpStatus403 or HttpStatus502)"
$customErrorUrl = “ErrorページのURL(ex;https://Blobストレージ名.blob.core.windows.net/コンテナ名/ファイル名)"

#処理部分
$AppGw = Get-AzApplicationGateway -Name $APGWName -ResourceGroupName $ResourceGroupName
$httplistner = Get-AzApplicationGatewayHttpListener -Name $ListenerName -ApplicationGateway $Appgw
$updatelistener = Set-AzApplicationGatewayHttpListenerCustomError -HttpListener $httplistner -StatusCode $StatusCode -CustomErrorPageUrl $customErrorUrl
Set-AzApplicationGateway -ApplicationGateway $AppGw

PowerShell実行後に確認

Azure PowerShellを使って502カスタムエラーページの更新してみました。
カスタムエラーページはcustom-error_powershell.htmlとしてBLOBコンテナーにアップロードして確認します。

カスタムエラーページの更新確認
502エラーのURLが更新されcustom-error_powershell.htmlとなっている事が確認出来ます。
Application Gateway(アプリケーションゲートウェイ)のIPへアクセスします。
カスタムエラーページが更新されている事が確認出来ます。

カスタムエラーページのファイルだけを更新しても反映されない

Application Gateway(アプリケーションゲートウェイ)のカスタムエラーページのファイルだけを更新しても反映されません。
キャッシュとしてApplication Gateway(アプリケーションゲートウェイ)保持している為、ファイルを更新してもその内容は反映されません。
カスタムエラーページを書き換える場合は、カスタムエラーページのURL書き換えもしくはApplication Gateway(アプリケーションゲートウェイ)の再起動が必要になります。

最後に

Application Gateway(アプリケーションゲートウェイ)でカスタムエラーページの設定から更新まで確認してみました。
PowerShellを使ってエラーページを更新などと併せてサイトメンテナンスの表示などに使えそうです。

無駄な課金を防ぐためにも検証が終わったらAzureリソースは削除もしくは停止しておきましょう。
Application Gatewayの起動停止についてはこちらでやっています。

スポンサーリンク