Application Gateway での App Service に関する問題のトラブルシューティング

Azure Application Gateway と共に Azure App Service をバックエンド ターゲットとして使用するときに発生する問題を診断し、解決する方法について説明します。

概要

この記事では、以下の問題のトラブルシューティング方法について説明します。詳細については、Architecture Center の「リバース プロキシとそのバックエンド Web アプリケーションの間で、元の HTTP ホスト名を維持する」を参照してください。

  • 正しくない絶対 URL
  • 正しくないリダイレクト URL
    • リダイレクトが生じたときに App Service URL がブラウザーに公開されます
    • たとえば、間違ったホスト名でリダイレクトされたために OIDC 認証フローが中断した場合などです。これには、App Service 認証と認可の使用が含まれます
  • 破損した Cookie
    • ブラウザーと App Service 間で Cookie が伝達されません
    • たとえば、App Service の ARRAffinity Cookie ドメインが元のホストではなく App Service のホスト名 ("example.azurewebsites.net") に設定された場合などです。 その結果、セッション アフィニティは壊れます。

前述の現象の根本原因は、Application Gateway が App Service に対して使うホスト名を、ブラウザーから見えるものと別のホスト名にオーバーライドする設定になっていることです。 多くの場合、ホスト名は App Service の既定ドメインである "azurewebsites.net" にオーバーライドされます。

Root cause - Application Gateway overwrites hostname to azurewebsites.net

サンプル構成

構成が次の 2 つのいずれかの状況に該当する場合、設定はこの記事の手順に従います。

  • [HTTP 設定] の [Pick Hostname from Backend Address]\(バックエンド アドレスからホスト名を選択する\) が有効になっている
  • [特定のドメイン名でオーバーライドする] が、ブラウザーの要求とは異なる値に設定されている

原因

App Service はマルチテナント サービスであるため、要求のホスト ヘッダーを使用して適切なエンドポイントに要求をルーティングします。 App Service の既定のドメイン名である *.azurewebsites.net (たとえば contoso.azurewebsites.net) は、Application Gateway のドメイン名 (たとえば contoso.com) とは異なります。 ブラウザーから見えるドメインと一致するリダイレクト URL または Cookie を生成するために必要なコンテキストがバックエンドの App Service にありません。

解決策

運用環境で推奨される解決策は、ホスト名をオーバーライドしないように Application Gateway と App Service を構成することです。 「Application Gateway を使用して App Service を構成する」の「カスタム ドメイン (推奨)」に記載されている手順に従ってください

他の回避策 (後述する Location ヘッダーの書き換えなど) の適用については、「リバース プロキシとそのバックエンド Web アプリケーションの間で、元の HTTP ホスト名を維持する」の記事で説明されている影響を評価した上で検討してください。 このような影響として、ドメイン バインド Cookie や、location ヘッダーの外部の絶対 URL が壊れたままになる可能性などがあります。

回避策: Location ヘッダーを書き換える

警告

この構成には制限があります。 クライアントと Application Gateway の間およびアプリケーションとバックエンドの App Service の間で異なるホスト名を使うことの影響を確認することをお勧めします。 詳しくは、アーキテクチャ センターの記事「リバース プロキシとそのバックエンド Web アプリケーションの間で、元の HTTP ホスト名を維持する」をご覧ください

location ヘッダーのホスト名をアプリケーション ゲートウェイのドメイン名に設定します。 これを行うには、応答の location ヘッダーに azurewebsites.net が含まれているかどうかを評価する条件で書き換え規則を作成します。 また、location ヘッダーを書き換えてアプリケーション ゲートウェイのホスト名を含めるようにするアクションも、これによって実行する必要があります。 詳細は、location ヘッダーの書き換え方法に関する記事の手順を参照してください。

Note

HTTP ヘッダーの書き換えのサポートは、Application Gateway の Standard_v2 と WAF_v2 SKU でのみ利用できます。 v2 SKU で利用可能なヘッダーの書き換えやその他の高度な機能を使用するには、v2 に移行することをお勧めします。

次のステップ

前の手順で問題を解決できなかった場合、サポート チケットを開きます。