web-dev-qa-db-ja.com

Kestrel for asp.netコアアプリケーションのプロダクションの準備はできていますか?

angular asp.net core 2.0で開発されたアプリケーションが使用するAPIを持っています。IISにデプロイされており、ケストレルを使用するように設定されています。

アプリケーションを公開する場合など、Kestrelは安全ではないことを読みました。本当?ケストレルはまだ本番使用の準備ができていませんか?または、ケストレルは、内部アプリケーションについて少数のブログが言っているように、まったく異なる目的のためです。

14
Hemanth Bidare

はい、Kestrelは本番環境に対応していますが、アプリケーションがパブリックネットワークで利用できる場合は、 Microsoft推奨 リバースプロキシで使用することをお勧めします。

hosting ASP.NET Core 2.1 apps のオプションの詳細については、MSDNドキュメントをご覧ください。 onWindows with IISon LinuxとNginx および on Linux on Apache .

リバースプロキシを使用する理由はいくつかあります。

  1. 同じIPとポートで複数のアプリケーションを実行する
  2. 露出表面積を制限する
  3. 構成と防御の追加レイヤー
  4. 簡素化された負荷分散とSSL設定(これらは、たとえばリバースプロキシで終了することができます)
  5. 静的ファイル、圧縮などのサポートの向上.

要件に応じて、上記のさまざまな側面が多かれ少なかれ重要になる場合があります。

たとえば、KestrelはASP.NET Coreアプリの実行を専門とする非常に軽量なWebサーバーですが、そのためにはIISやApacheなどの機能の多くがありません。あなたがしたいこと。たとえば、画像、CSS、JSなどの静的ファイルの処理は、ASP.NET Coreエンジンで処理する必要はありません。IISを使用すると、これらのファイルを自動的に圧縮し、キャッシュヘッダーを追加して、その後の処理を高速化できます。ページの読み込み。同様に、リダイレクトとルーティングは、リクエストがプロセッサに到達する前にIISで処理できます。

セキュリティの観点からも、リクエストがKestrelに到達する前にリクエストフィルタリング(使用される動詞、パスなど)、IPフィルタリング、認証などの機能を利用でき、これらの側面を処理する必要はありません。コード。

注意点として、 for ASP.NET Core 1.x 、ドキュメントはさらに具体的です:

アプリケーションをインターネットに公開する場合は、IIS、Nginx、またはApacheをリバースプロキシサーバーとして使用する必要があります。リバースプロキシサーバーは、インターネットからHTTPリクエストを受信し、いくつかの予備的な処理の後にそれらをKestrelに転送します。

9