「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>ASP.NET Core]] * 目次 [#b4257e9b] #contents *概要 [#l87168e1] [[ASP.NET Core]]のWebサーバ・インフラストラクチャについて説明する。 *インプロセス HTTP サーバ [#j2011f31] [[ASP.NET Core]]アプリは、下記のインプロセス HTTP サーバ実装を使用して実行される。 **Kestrel [#c9a915ba] ***概要 [#w8a20988] -クロスプラットフォームの HTTP サーバ。 -[[非同期 I/O ライブラリである libuv>C10k problem (C10K問題)]] に基づく。 -[[ASP.NET Core]]プロジェクト テンプレートは既定では Kestrel を使用する。 ***機能 [#y8734707] -HTTPS -Websocket -UNIXドメインソケット ***用例 [#z06fdcf1] -内部ネットワークにのみ公開される場合、単独で使用。 -外部公開する場合、[[IIS]]、nginx、Apache などのリバース プロキシと併用。~ (外部公開する場合、Webサーバのセキュリティ機能が必要になる) ***構成 [#gd9f9281] -単独~ Startup.Configureメソッド内で、 --クライアントの最大接続数、要求本文の最大サイズ、要求本文の最小レートなどを設定 --app.UseKestrelメソッドや、app.Runメソッドにより設定 -[[併用>#j8e557d9]] **HTTP.sys [#s1c26c01] ***概要 [#r9bb7a21] -Windows 専用。 -下記に基づく。 --HTTP.sys カーネル ドライバ --[[HTTP サーバ API>https://msdn.microsoft.com/library/windows/desktop/aa364510.aspx]] ***機能 [#fa16e537] -Windows 認証 -ポート共有 -SNI を使用する HTTPS -直接ファイル伝送 -応答キャッシュ -WebSocket (Windows 8 以降) -HTTP/2 over TLS (Windows 10 以降) ***用例 [#d88932d0] -IIS を使用せず、インターネットに直接サーバを公開するシナリオ -Kestrel ではサポートされていないシナリオ --インターネットに公開する場合。 --その他、[[HTTP.sys の機能>#fa16e537]]を使用したい場合。 ***構成 [#q02688f2] -HTTP.sysと[[ASP.NET Core]]のコードと直結させる。 -設定は、以下によって行う。 --Windows Serverの構成 ---ファイアウォールのポートを開ける。 ---HTTP.sys の構成(レジストリ設定) ---HTTP.sysにx.509 証明書を設定する。 ---.NET Framework、[[.NET Core]]などのランタイムをインストール --[[ASP.NET Core]]アプリの構成~ Startup.Configureメソッド内で、 ---・・・などを、 ---app.UseHttpSysメソッドや、app.Useメソッドにより設定 **カスタム サーバ [#x7bb81cd] [[OWIN]](Nowin ベースの IServer 実装)に基づいたカスタム サーバを開発可能。 *一般的なHTTP サーバ [#j8e557d9] -[[IIS]] と Kestrel~ バース プロキシとして [[IIS]] または IIS Express を使用 -nginx と Kestre~ リバース プロキシとして nginx を使用 -Apache と Kestrel~ リバース プロキシとして Apache を使用 **[[IIS]] [#zdf79f7d] -[[ASP.NET Core]] モジュール (ANCM)を使用してKestrelと連携する。 -ANCM とは、ネイティブの [[IIS]]モジュールで、 --[[IIS]]パイプラインにフックして、 --トラフィックをバックエンドにリダイレクトする。 --Kestrel は ANCM からのトラフィックをリッスンする。 -参考~ コチラが参考になる。 --[[ASP.NET Coreのデプロイ - 検証 - IIS>ASP.NET Coreのデプロイ#r51d5558]] --ASP.NET Core モジュール(≒[[IIS]]で [[ASP.NET Core]]をホストする)~ https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/servers/aspnet-core-module **nginx [#y192af2f] [[コチラ>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx%E3%81%A7ASP.NET%20Core%E3%82%92%E3%83%9B%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B]]を参照。 **Apache [#t8b57975] ・・・ *参考 [#a0116682] -ASP.NET vNext で用意されている 3 種類のサーバー - しばやん雑記~ http://blog.shibayan.jp/entry/20141106/1415200465 -.NET Core で ウェブサーバ Kestrel を使ってウェブアプリを作ってみるテスト - Qiita~ https://qiita.com/kent_ocean/items/5f2e791623763a97a9e0 **Microsoft Docs [#f2dfb53e] -ASP.NET Core での Web サーバーの実装~ https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/servers/ --ASP.NET Core への Kestrel Web サーバーの実装~ https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/servers/kestrel --ASP.NET Core での HTTP.sys Web サーバーの実装~ https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/servers/httpsys --ASP.NET Core モジュール(≒IIS で ASP.NET Core をホストする)~ https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/servers/aspnet-core-module --Nginx 搭載の Linux で ASP.NET Core をホストする~ https://docs.microsoft.com/ja-jp/aspnet/core/host-and-deploy/linux-nginx --Apache 搭載の Linux で ASP.NET Core をホストする~ https://docs.microsoft.com/ja-jp/aspnet/core/host-and-deploy/linux-apache **.NET 開発基盤部会 Wiki [#r5974ce7] -nginxでASP.NET Coreをホストする~ https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx%E3%81%A7ASP.NET%20Core%E3%82%92%E3%83%9B%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B ---- Tags: [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET MVC]]