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

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

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

Application Gatewayでは、ユーザーが準備したカスタムエラーページを表示させることができます。
リスナーにカスタムエラーページを設定することで、ユーザー作成のエラーページを表示することが可能です。
カスタムエラーページは、URL(BLOB コンテナーなど)を指定して設定します。

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

BLOB コンテナーにアップロードしたHTMLファイルを、Application Gatewayのカスタムエラーページとして表示させる手順について確認しました。
また、Azure PowerShellを使用してカスタムエラーページの設定を更新する手順も確認しています。

※本記事では、一部を除きAzure Application Gateway(アプリケーションゲートウェイ)を、Application Gatewayとして表記しています。

スポンサーリンク

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

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

Application Gatewayでは、バックエンドとの疎通が取れない場合、デフォルトの502エラーページが表示されます。

502エラーの場合

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

カスタムエラーページはリスナーで設定

Application Gatewayのカスタムエラーページは、リスナーで設定します。

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

403エラーや502エラーの場合に設定が可能で、リスナー単位で設定できます。

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

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

—広告—

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

Application Gatewayのカスタムエラーページは、URLを指定して設定します。
今回は、BLOB コンテナーにアップロードしたファイルをURLとして指定します。

カスタムエラーページ用のHTMLをBLOB コンテナーにアップロード

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

必要条件

BLOB コンテナーへカスタムエラーページ用のHTMLファイルをアップロード
テスト用の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 コンテナーは準備済みのものを利用しています。

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

Application Gatewayのリスナーに、カスタムエラーページを設定します。

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

※URLにアクセスできない場合、エラーとなり設定が保存できません。

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

カスタムエラーページが正しく表示されるかを確認します。
Application GatewayのIP(もしくはURL)にアクセスします。カスタムエラーページが表示されることを確認できます。

バックエンドのWEBサーバを停止した状態(502エラーが表示される状態)で確認を行います。

カスタムエラーページの表示確認
カスタムエラーページが表示されることを確認できました。

—広告—

Azure PowerShellを使ったカスタムエラーページの更新手順

リスナーのカスタムエラーページ更新にはSet-AzApplicationGatewayHttpListenerCustomErrorを使う

Azure PowerShellを使用したカスタムエラーページの更新は、リスナー設定の更新とApplication Gatewayの設定更新の2段階で実施します。

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

# パラメーター

$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 コンテナーにアップロードしています。

Application GatewayのIP(もしくはURL)にアクセスします。
カスタムエラーページが更新されていることを確認できます。

カスタムエラーページの更新確認
Application Gatewayのリスナー設定を確認します。
502エラーのURLが更新され、custom-error_powershell.htmlになっていることが確認できます。
更新したカスタムエラーページが表示されている事を確認できます。

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

Application Gatewayの設定を変更せずに、カスタムエラーページで指定しているファイルを更新しただけでは、変更が反映されません。
これは、Application Gatewayがキャッシュを保持しているため、ファイルを更新してもその内容が反映されないためです。

最後に

Application Gatewayでカスタムエラーページの設定から更新までを確認してみました。
PowerShellを使用したエラーページを更新する手順も確認してみました。
カスタムエラーページを使うことで、サイトメンテナンスの表示などに活用できそうです。

引き続き、いろいろ試してみたいと思います。

Application Gatewayの概要からリソース作成手順については、こちらで紹介しています。

Application Gatewayのバックエンド正常性確認や監視設定手順については、こちらで紹介しています。

Application GatewayのWAF関連の設定方法については、こちらで紹介しています。

Application Gatewayの起動停止方法については、こちらで紹介しています。

スポンサーリンク