Kestrel とリバース プロキシを使用するタイミング

Kestrel は単独で使用することも、"リバース プロキシ サーバー" と併用することもできます。 リバース プロキシ サーバーはネットワークから HTTP 要求を受け取り、これを Kestrel に転送します。 リバース プロキシ サーバーの例を次に示します。

エッジ (インターネットに接続する) Web サーバーとして使用される Kestrel:

Kestrel communicates directly with the Internet without a reverse proxy server

リバース プロキシ構成で使用される Kestrel:

Kestrel communicates indirectly with the Internet through a reverse proxy server, such as IIS, Nginx, or Apache

いずれの構成でも、リバース プロキシ サーバーの有無に関わらず、ホスティング構成がサポートされています。

リバース プロキシ サーバーのないエッジ サーバーとして Kestrel を使用する場合、複数のプロセス間で同じ IP アドレスとポートを共有することはサポートされません。 あるポートをリッスンするように Kestrel を構成する場合は、要求の Host ヘッダーに関係なく、Kestrel によってそのポートに対するすべてのトラフィックが処理されます。 ポートを共有できるリバース プロキシを使用すると、一意の IP とポート上で Kestrel に要求を転送することができます。

リバース プロキシ サーバーが必要ない場合であっても、リバース プロキシ サーバーを使用すると次のような利点があります。

リバース プロキシ:

  • ホストするアプリの公開されるパブリック サーフェス領域を制限することができます。
  • 構成および防御の層を追加します。
  • 既存のインフラストラクチャとより適切に統合できる場合があります。
  • 負荷分散とセキュリティで保護された通信 (HTTPS) の構成を簡略化します。 リバース プロキシ サーバーのみが、パブリック ドメインの X.509 証明書を必要とします。 そのサーバーは、ローカルで管理された証明書を使用してプレーン HTTP または HTTPS を使用して、内部ネットワーク上のアプリのサーバーと通信できます。 内部 HTTPS ではセキュリティが向上しますが、オーバーヘッドは大幅に増加します。

警告

リバース プロキシ構成でのホストにはホストのフィルター処理が必要です。

その他のリソース

プロキシ サーバーとロード バランサーを使用するために ASP.NET Core を構成する