Azureサイトの謎エラー表示の原因は?

Azureでサイト構築した際に、ブラウザによく分からないメッセージが出たことはありませんか?

初見だと良く分からないけど、慣れれば「ああ、アレか」となるエラー表示をご紹介します。

「502 Bad Gateway」の下に「Microsoft-Azure-Application-Gateway/v2」と書かれた画面

502エラーの文字が大きすぎて下の小さい文字を見逃しがちなのですが、書いてある通りApplication Gatewayからのエラー出力です。

この場合は、Application Gatewayの正常性プローブの状態を疑います。
AzureポータルからApplication Gatewayを開き、監視 – バックエンド正常性を開いてみましょう。
自動的に正常性プローブの設定に従い状態が確認されるので、エラー応答しているバックエンドについて下記を確認しましょう。

  • アプリが正常にデプロイできているか
  • 正常性プローブの設定値が間違っているか

稀に・・・特にTerraformでApplication Gatewayを作成したとき、正常性プローブの状態が「不明」になるときがあります。
この場合は正常性プローブの設定値を一度変更して保存して戻して保存すると復旧することがあるようです。例えばタイムアウト値を一度1秒少ない値にして戻すとか。公式見解ではないと思いますがご参考までに。

「The request is blocked.」と「意味不明な文字の羅列」が書かれた画面

Azure Front Door の WAF (ファイアウォール) に引っかかったときに出る画面です。
例えばリクエストパラメータにSQLインジェクション的な文字列が入っている場合に出ます。

Front Doorの診断設定で FrontdoorWebApplicationFirewallLog の収集をしている場合、下記のクエリでブロックされたログが検索できます。

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

ruleName_s に出力されているルールについて下記の記事を確認しながら除外設定を追加することでエラーが回避できると思われますが、アプリ側が攻撃に晒されないか事前に十分に確認しましょう。

https://docs.microsoft.com/ja-jp/azure/web-application-firewall/afds/waf-front-door-exclusion

「Our services aren’t available right now」と「意味不明な文字の羅列」が書かれた画面

Front Doorの設定が間違っている場合に見かける画面です。
明らかに間違っているときはFront Door デザイナーで警告表示が出るので、まずはそこを確認しましょう。

Front Door デザイナーで警告が出なくてこのエラーが出る場合は、ルーティング規則やバックエンドプールの設定ミスが考えられます。
一つ一つ確認しましょう。
特に、バックエンドプールのバックエンド ホスト ヘッダーは見落としがちです。ご注意を。

https://docs.microsoft.com/ja-jp/azure/frontdoor/front-door-backend-pool#backend-host-header

まとめ

よく見るエラーと対策を整理してみました。
対策については私の経験上のものを書いているだけなので、ほかのケースもあるかもしれません。
「どのリソースに原因がありそうか?」の参考になれば幸いです。