アプリケーション ゲートウェイの動作How an application gateway works

この記事では、アプリケーション ゲートウェイが受信要求をどのように受け付け、それらをどのようにバックエンドにルーティングするかについて説明します。This article explains how an application gateway accepts incoming requests and routes them to the backend.

アプリケーション ゲートウェイでの要求の受け付け方法

アプリケーション ゲートウェイでの要求の受け付け方法How an application gateway accepts a request

  1. クライアントからアプリケーション ゲートウェイに要求が送信される前に、ドメイン ネーム システム (DNS) サーバーを使用してアプリケーション ゲートウェイのドメイン名が解決されます。Before a client sends a request to an application gateway, it resolves the domain name of the application gateway by using a Domain Name System (DNS) server. すべてのアプリケーション ゲートウェイは azure.com ドメインに存在するため、DNS エントリは Azure によって制御されます。Azure controls the DNS entry because all application gateways are in the azure.com domain.

  2. Azure DNS によって、IP アドレス (アプリケーション ゲートウェイのフロントエンド IP アドレス) がクライアントに返されます。The Azure DNS returns the IP address to the client, which is the frontend IP address of the application gateway.

  3. アプリケーション ゲートウェイは、1 つ以上のリスナーで受信トラフィックを受け付けます。The application gateway accepts incoming traffic on one or more listeners. リスナーは、接続要求をチェックする論理エンティティです。A listener is a logical entity that checks for connection requests. これは、クライアントからアプリケーション ゲートウェイに接続するためのフロントエンド IP アドレス、プロトコル、およびポート番号で構成されています。It's configured with a frontend IP address, protocol, and port number for connections from clients to the application gateway.

  4. Web アプリケーション ファイアウォール (WAF) が使用されている場合、要求のヘッダーと本文が存在していれば、WAF 規則に対するチェックがアプリケーション ゲートウェイで実行されます。If a web application firewall (WAF) is in use, the application gateway checks the request headers and the body, if present, against WAF rules. このアクションによって、要求が有効な要求であるかセキュリティ上の脅威であるかが決定されます。This action determines if the request is valid request or a security threat. 要求が有効な場合は、バックエンドにルーティングされます。If the request is valid, it's routed to the backend. 要求が有効ではなく、WAF が防止モードになっている場合は、セキュリティ上の脅威としてブロックされます。If the request isn't valid and WAF is in Prevention mode, it's blocked as a security threat. 検出モードの場合は、要求は評価されてログに記録されますが、それでもバックエンド サーバーに転送されます。If it's in Detection mode, the request is evaluated and logged, but still forwarded to the backend server.

内部アプリケーション ロード バランサーまたはインターネットに接続しているアプリケーション ロード バランサーとして、Azure Application Gateway を使用できます。Azure Application Gateway can be used as an internal application load balancer or as an internet-facing application load balancer. インターネットに接続しているアプリケーション ゲートウェイでは、パブリック IP アドレスが使用されます。An internet-facing application gateway uses public IP addresses. インターネットに接続しているアプリケーション ゲートウェイの DNS 名は、そのパブリック IP アドレスにパブリックに解決できます。The DNS name of an internet-facing application gateway is publicly resolvable to its public IP address. その結果、インターネットに接続しているアプリケーション ゲートウェイで、クライアントからの要求をインターネットにルーティングできます。As a result, internet-facing application gateways can route client requests to the internet.

内部アプリケーション ゲートウェイでは、プライベート IP アドレスだけが使用されます。Internal application gateways use only private IP addresses. カスタムまたはプライベート DNS ゾーンを使用している場合、ドメイン名は、アプリケーション ゲートウェイのプライベート IP アドレスに内部的に解決される必要があります。If you are using a Custom or Private DNS zone, the domain name should be internally resolvable to the private IP address of the Application Gateway. そのため、内部ロード バランサーでは、アプリケーション ゲートウェイ用の仮想ネットワークにアクセスできるクライアントからの要求のみルーティングできます。Therefore, internal load-balancers can only route requests from clients with access to a virtual network for the application gateway.

アプリケーション ゲートウェイでの要求のルーティング方法How an application gateway routes a request

要求が有効であり、WAF によってブロックされない場合は、リスナーに関連付けられている要求ルーティング規則がアプリケーション ゲートウェイで評価されます。If a request is valid and not blocked by WAF, the application gateway evaluates the request routing rule that's associated with the listener. このアクションによって、どのバックエンド プールに要求をルーティングするかが決定されます。This action determines which backend pool to route the request to.

要求ルーティング規則に基づいて、アプリケーション ゲートウェイでは、リスナー上のすべての要求を特定のバックエンド プールにルーティングするか、URL パスに基づいて異なるバックエンド プールにルーティングするか、別のポートまたは外部サイトにリダイレクトするかが決定されます。Based on the request routing rule, the application gateway determines whether to route all requests on the listener to a specific backend pool, route requests to different backend pools based on the URL path, or redirect requests to another port or external site.

注意

規則は、v1 SKU に対してポータルに一覧表示される順序で処理されます。Rules are processed in the order they're listed in the portal for v1 SKU.

アプリケーション ゲートウェイでバックエンド プールが選択されると、プール内のいずれかの正常なバックエンド サーバー (y.y.y.y) に要求が送信されます。When the application gateway selects the backend pool, it sends the request to one of the healthy backend servers in the pool (y.y.y.y). サーバーの正常性は、正常性プローブによって決定されます。The health of the server is determined by a health probe. バックエンド プールに複数のサーバーが含まれている場合、アプリケーション ゲートウェイではラウンド ロビン アルゴリズムを使用して、正常なサーバーに要求がルーティングされます。If the backend pool contains multiple servers, the application gateway uses a round-robin algorithm to route the requests between healthy servers. これにより、複数のサーバーに要求が負荷分散されます。This load balances the requests on the servers.

アプリケーション ゲートウェイでバックエンド サーバーが決定されると、HTTP 設定に基づいて、そのバックエンド サーバーとの新しい TCP セッションが開かれます。After the application gateway determines the backend server, it opens a new TCP session with the backend server based on HTTP settings. HTTP 設定には、バックエンド サーバーとの新しいセッションを確立するために必要なプロトコル、ポート、その他のルーティング関連の設定が指定されています。HTTP settings specify the protocol, port, and other routing-related settings that are required to establish a new session with the backend server.

アプリケーション ゲートウェイとバックエンド サーバーの間でトラフィックが暗号化されるかどうか (またそれによって、エンド ツー エンドの TLS が達成されるかどうか) は、HTTP 設定で使用されているポートとプロトコルによって決まります。The port and protocol used in HTTP settings determine whether the traffic between the application gateway and backend servers is encrypted (thus accomplishing end-to-end TLS) or is unencrypted.

アプリケーション ゲートウェイによって元の要求がバックエンド サーバーに送信されるときに、HTTP 設定内のホスト名、パス、およびプロトコルをオーバーライドするためのカスタム構成が使用されます。When an application gateway sends the original request to the backend server, it honors any custom configuration made in the HTTP settings related to overriding the hostname, path, and protocol. このアクションによって、Cookie ベースのセッション アフィニティ、接続のドレイン、バックエンドからのホスト名の選択が管理されます。This action maintains cookie-based session affinity, connection draining, host-name selection from the backend, and so on.

注意

バックエンド プールが、If the backend pool:

  • パブリック エンドポイントである場合、アプリケーション ゲートウェイでは、フロントエンド パブリック IP を使用してサーバーに到達します。Is a public endpoint, the application gateway uses its frontend public IP to reach the server. フロントエンド パブリック IP アドレスが存在しない場合は、送信外部接続用のフロントエンド パブリック IP アドレスが割り当てられます。If there isn't a frontend public IP address, one is assigned for the outbound external connectivity.
  • 内部的に解決できる FQDN またはプライベート IP アドレスが含まれている場合、アプリケーション ゲートウェイでは、インスタンスのプライベート IP アドレスを使用して、バックエンド サーバーに要求がルーティングされます。Contains an internally resolvable FQDN or a private IP address, the application gateway routes the request to the backend server by using its instance private IP addresses.
  • 外部エンドポイントまたは外部的に解決できる FQDN が含まれている場合、アプリケーション ゲートウェイでは、フロントエンド パブリック IP アドレスを使用して、要求がバックエンド サーバーにルーティングされます。Contains an external endpoint or an externally resolvable FQDN, the application gateway routes the request to the backend server by using its frontend public IP address. プライベート DNS ゾーンまたはカスタム DNS サーバーが構成されている場合は、それに基づいて DNS 解決が行われます。それ以外の場合は、Azure で提供されている既定の DNS が使用されます。The DNS resolution is based on a private DNS zone or custom DNS server, if configured, or it uses the default Azure-provided DNS. フロントエンド パブリック IP アドレスが存在しない場合は、送信外部接続用のフロントエンド パブリック IP アドレスが割り当てられます。If there isn't a frontend public IP address, one is assigned for the outbound external connectivity.

要求への変更Modifications to the request

アプリケーション ゲートウェイでは、要求がバックエンドに転送される前に、すべての要求に 4 つの追加ヘッダーが挿入されます。An application gateway inserts four additional headers to all requests before it forwards the requests to the backend. これらのヘッダーは、x-forwarded-for、x-forwarded-proto、x-forwarded-port、および x-original-host です。These headers are x-forwarded-for, x-forwarded-proto, x-forwarded-port, and x-original-host. x-forwarded-for ヘッダーの形式は、IP:ポートのコンマ区切りリストです。The format for x-forwarded-for header is a comma-separated list of IP:port.

x-forwarded-proto の有効な値は、HTTP または HTTPS です。The valid values for x-forwarded-proto are HTTP or HTTPS. x-forwarded-port には、要求がアプリケーション ゲートウェイに到達したポートが指定されます。X-forwarded-port specifies the port where the request reached the application gateway. X-original-host ヘッダーには、到着した要求にあった元のホスト ヘッダーが含まれています。X-original-host header contains the original host header with which the request arrived. このヘッダーは、トラフィックがバックエンドにルーティングされる前に受信ホスト ヘッダーが変更される Azure Web サイト統合で役立ちます。This header is useful in Azure website integration, where the incoming host header is modified before traffic is routed to the backend. オプションとしてセッション アフィニティが有効になっている場合は、ゲートウェイで管理されるアフィニティ Cookie が挿入されます。If session affinity is enabled as an option, then it adds a gateway-managed affinity cookie.

HTTP ヘッダーと URL を書き換える方法に関するページを使用して、要求および応答ヘッダーを変更したり、path-override 設定を使用して、URI パスを変更したりするようにアプリケーション ゲートウェイを構成できます。You can configure application gateway to modify request and response headers and URL by using Rewrite HTTP headers and URL or to modify the URI path by using a path-override setting. ただし、そのように構成されていない限り、すべての受信要求はバックエンドにプロキシ処理されます。However, unless configured to do so, all incoming requests are proxied to the backend.

次のステップNext steps

アプリケーション ゲートウェイのコンポーネントを確認するLearn about application gateway components