「[[マイクロソフト系技術情報 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]
・・・

*[[ASP.NET Coreのデプロイ]] [#s64e696f]
**[[on IIS>ASP.NET Coreのデプロイ#r51d5558]] [#w6650214]
**[[on Linux>ASP.NET Coreのデプロイ#ac95e514]] [#x632aa18]

*参考 [#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]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS