.NET 4.5で作成された2つの別々のアプリケーション、Web ApiアプリケーションとMVCアプリケーションがあるとします。 IIS)でMVCアプリケーションをホストする場合は、ホストヘッダー " https://www.mymvcapp.com/ "でWebをホストすることができます。 IIS Hostヘッダーの下にあるAPIアプリケーションを個別に " https://www.mymvcapp.com/api/ "?
IISで2つのアプリケーションを実行するプロセスは分離する必要があります。IISを使用したホスティング、セルフホスティング、ホスティングの個別の方法を知っています。IIS可能な場合。
また、http://www.mymvcapp.com/api
からapiを提供できるように、2つのアプリケーション(APIとWebアプリケーション)を別々のサーバーに置いた場合、どのようにホストしますか?
やりたいことを行うには、少なくとも4つの方法があります。最初の2つの方法は、1つのWebサーバーがあり、IISを実行しているその1つのWebサーバーから両方のアプリケーションが提供される場合に使用します。この方法は、APIとWebサイトが同じサーバーで実行されている限り、ロードバランサーの背後で複数のWebサーバーが実行されている場合にも機能します。
2番目の2つの方法は、「リバースプロキシ」と呼ばれるものを使用しています。これは、受信するトラフィックのタイプに応じて、1つのサーバー(プロキシサーバー)から複数の内部サーバーにトラフィックをルーティングする方法です。これは、一連のサーバーでWebサーバーを実行し、API 別のサーバーのセットを実行する場合に使用します。過去に両方を使用したことがあるので、必要なリバースプロキシソフトウェアを使用できます。nginxとHAProxyについて触れます。
IISでこれを行うには2つの方法があります。
物理フォルダー構造が次のとおりである場合:
c:\sites\mymvcapp
c:\sites\mymvcapp\api
次のことができます。
子アプリケーションを作成すると、ルーティングの変更を必要とせずに、「API」サイトにwww.mymvcapp.com/api
からアクセスできるようになります。
それを行うには:
API
フォルダを右クリックします欠点は、すべての子アプリケーションがその親のWeb構成を継承することであり、そこで競合する設定がある場合、実行時の奇妙さが表示されます(それがまったく機能する場合)。
2番目の方法は、アプリケーションがその分離性を維持できるようにするための方法です。また、ルーティングを行う必要はありません。
2つのフォルダー構造を想定します。
c:\sites\api
c:\sites\mvcapp
Windowsでジャンクションを設定できます。コマンドラインから*:
cd c:\sites
mklink /D /J mymvcapp c:\sites\mvcapp
cd mymvcapp
mklink /D /J api c:\sites\api
次にIIS Managerに移動し、両方をアプリケーションに変換します。これにより、API
は\api\
で利用可能になりますが、実際にはそのweb.config設定を共有しません親と。
Nginxまたはhaproxyをリバースプロキシとして使用する場合は、コールを各アプリにルーティングするように設定できます。
Nginx.confで(ベストプラクティスは、sites-enabled
へのシンボリックリンクであるsites-available
confを作成することです。デプロイするたびにそのシンボリックリンクを破棄できます)。
location / {
proxy_pass http://mymvcapp.com:80
}
location /api {
proxy_pass http://mymvcapp.com:81
}
次に、正しいIIS設定を設定して、各サイトがポート80(mymvcapp)およびポート81(api)でリッスンするようにします。
acl acl_WEB hdr_beg(Host) -i mymvcapp.com
acl acl_API path_beg -i /api
use_backend API if acl_API
use_backend WEB if acl_WEB
backend API
server web mymvcapp.com:81
backend WEB
server web mymvcapp.com:80
* Junctionコマンドをメモリから発行しています。これは数か月前に行ったが最近ではないので、コマンドに問題がある場合はお知らせください
[〜#〜] nb [〜#〜]:設定ファイルは完全な設定ファイルではなく、リバースプロキシに必要な設定を示すためだけのものです。環境によっては、設定が必要なその他の設定がある場合があります。