Asp.netコアでいくつかのWebサイトを構築しています(複数のユーザーインターフェイスアプリケーションとWeb APIアプリ)。それらはすべてWeb APIを利用して連携します。私の質問では、App1、App2、App3と呼びます。 IISでWebサイトをホストしています。
通常、古い.net Framework(4.5.1)では、IISに1つのWebサイトがあり、複数のWebアプリで複数のアプリケーションをホストしていました。そのようです:
WebSite1-ポート443で実行
アプリ1
アプリ2
アプリ3
Webサイト(WebSite1)が(SSL証明書を使用して)ポート443で実行されている場合、次のように1つのドメインURLを介してすべてのアプリにアクセスできます。
URLの最後に異なるアプリ名を付けて、それらを識別します。
新しいasp.NET Coreアプリケーションをホストする場合、IISでもホストします。また、asp.NET Core Webサイトの展開に関するドキュメントに従って、異なる.NET Core WebアプリをホストしますIIS内のサイト。
https://www.example.com のように、すべてのサイトに1つのドメイン名があるため(SSL証明書を使用しています)、他のWebサイトに異なるポートを指定する必要があります。だから私はこのようなものになってしまいます:
WebSite1-ポート443で実行
WebSite2-ポート444で実行
WebSite3-ポート445で実行
これらのアプリはすべて、次のドメイン名のURLを介してアクセスできます。
Asp.NET Coreアプリケーションをすべて1つのWebサイトの下で異なる "アプリケーション"としてホストするにはどうすればよいですか。つまり、同じドメイン名のURL( https://www.example.com およびフォワードスラッシュアプリに解決されます)名前は、必要なアプリを識別します)? ORまたは、ポートで構成したものをすべてルーティングして、App1がexample.com/のデフォルト、App 2がexample.com/app2/、App 3はexample.com/app3/?
この.NET Core展開を完全に間違った方法で見ていますか?
ポインタを事前にありがとう!
同じドメインで複数のASP Net Coreアプリケーションを提供するためにリバースプロキシを使用できます。
IISの使用はよくわかりませんが、URL書き換えをインストールしてから のドキュメントに従ってください Microsoftから提供されました(これも これ が参考になります)。
nginx を使用することもできます location および proxy_pass 次のように:
...
Some nginx Configuration
location /App1 {
proxy_pass http://127.0.0.1:443;
}
location /App2 {
proxy_pass http://127.0.0.1:444;
}
location /App3 {
proxy_pass http://127.0.0.1:445;
}
Other configurations...
その後、別のASP Netアプリケーションをドメインに追加するたびに、別の場所を追加し、別のポイントでアプリケーションを実行してnginxを再起動する必要があります。
アプリごとにサイトを作成する必要はありません。1つのサイト内のWebアプリケーションとして、以前と同様にホストできます。必要なのは、.Net Coreアプリケーション用に管理されていないアプリプールを選択することだけです。したがって、これは機能します: https:// domain/app1 および https:// domain/app2 で、Webサーバーに必要な証明書は1つだけです
または、アプリごとにサイトを作成してから、アプリごとに https://app1.domain のようなサブドメインが必要です https://app2.domain この場合、すべてのサブドメインは同じIPを指す必要があり(サーバーにIPが1つしかない場合)、そのサイトへの各サイト\アプリのバインディングを設定する必要があります。すべてのサイトを同じポート(443または80)にバインドする必要があります。
IIS 7の場合、複数サイト構成でのSSLの場合、ワイルドカード証明書が必要です。IIS 8以上では、サーバー名表示機能を使用でき、サイトごとに個別の証明書がありますが、SNIは新しいため、一部のブラウザーでサポートされていない可能性があるため、ワイルドカード証明書も使用することをお勧めします
どちらの場合も、ここからWindowsサーバーホスティングをセットアップする必要があります Microsoftのダウンロードセンター
試してください:Web.configファイルで、各アプリケーションに異なる名前を付けます:<add name="herenewappname" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
ここでサブアプリケーションのアドバイスを使用してこれを機能させました: https://docs.Microsoft.com/en-us/aspnet/core/Host-and-deploy/iis/?view=aspnetcore-2.2#サブアプリケーション 。
リンクが切れた場合の重要な部分は次のとおりです。
ASP.NET Coreアプリを別のASP.NET Coreアプリの下のサブアプリとしてホストするには:
1.サブアプリのアプリプールを確立します。 .NET Coreのコア共通言語ランタイム(CoreCLR)が起動され、デスクトップCLR(.NET CLR)ではなくワーカープロセスでアプリをホストするため、.NET CLRバージョンをマネージコードなしに設定します。
2. IIS Managerにルートサイトを追加し、ルートサイトの下のフォルダにサブアプリを配置します。
3。IIS Managerのサブアプリフォルダーを右クリックし、[アプリケーションに変換]を選択します。
4. [アプリケーションの追加]ダイアログで、アプリケーションプールの[選択]ボタンを使用して、サブアプリ用に作成したアプリプールを割り当てます。 OKを選択します。
ボーナスとして、私のメインアプリケーションはレガシーWebフォームであり、私のサブアプリケーションはエキサイティングな新しい.NET Core機能です。
幸せな日々。
IISの場合、アプリケーション要求ルーティング( [〜#〜] arr [〜#〜] )を RL rewrite モジュールと組み合わせて使用して、リクエストを次の関連付けにルーティングできます。 URLポート。 Nginxのような同様のプロキシを構築し、URLの各パターンに従って適切なポートを指すために使用されます。以下のARRのサンプルを確認できます。