Web ゲートウェイを介して要求をルーティングする URL パスの選択
InterSystems Web ゲートウェイ・モジュールで Web サーバ構成を拡張したら、InterSystems Web アプリケーション用の Web ゲートウェイ接続を設定するプロセスの次のステップは、要求の URL の相対パス (つまり、プロトコル、ホスト名、ポート番号などの要素を省略したパス) に基づいて、処理するために Web サーバが Web ゲートウェイに渡す要求を指定することです。
ただし、構成するために選択するパスは、ルーティング・プロセスの他のステージでも重要になります。
-
Web ゲートウェイは要求の相対パス (プロトコル、ホスト名、ポート番号などの URL の構成要素を省略したパス) を使用し、ユーザが定義したアプリケーション・アクセス・プロファイルに基づいて、要求を受信する InterSystems IRIS アプリケーション・サーバを決定します。
-
InterSystems IRIS アプリケーション・サーバは、要求の相対パスといずれかの Web アプリケーションの名前を照合して、特定の要求に対して呼び出す Web アプリケーションを決定します。
-
複数のインスタンスがあるシステム上で、特定の InterSystems IRIS インスタンスをターゲットにするには、要求をルーティングするために選択する相対パスに、各インスタンスを一意に識別する接頭語 (ただし、アプリケーション・サーバが要求のパスをいずれかの Web アプリケーションと照合するのを妨げないもの) を含める必要があります。
このページでは、要求の URL で指定された相対パスに基づいて、各ステージで要求がルーティングされる方法を決定するための関連条件について詳しく説明します。Web アプリケーションをホストするための URL パスを決定する際には、これらの条件を考慮してください。
このページでは、以下の状況での要求のルーティングに関する情報も提供します。
-
単一の Web サーバで複数の InterSystems IRIS インスタンスをホストする場合。
-
単一の Web サーバで複数の InterSystems IRIS インスタンスをホストする場合 (各インスタンスのアドレス指定のために使用されるインスタンス接頭語をカスタマイズする必要がある)。
-
Apache 仮想ホストを使用し、異なるホスト名を使用してアプリケーション要求をルーティングする場合。
Web サーバから
一般に、Web サーバは URL パスに送信される要求の処理方法を決定する際に、継承のルールを適用します。そうでない場合は、特定の要求パスに一致する最も具体的なパスの構成指示文を適用します。
例えば、Web クライアントが相対 URLパス /Accounts/Invoices に要求を送信する場合、Apache Web サーバは <Location> ブロックの構成を以下の順序で確認し、見つかった最も適切なブロック内の指示文を適用します。
-
<Location /Accounts/Invoices>
-
<Location /Accounts>
-
<Location />
ルーティング動作の詳細は、Web サーバのドキュメントを参照してください。特定の URL パスの要求に対して Web ゲートウェイを呼び出すように Web サーバを構成する方法は、使用している Web サーバによっても異なります。概要は、設定の概要ページのこのセクション、詳細は、"Web ゲートウェイでの Web サーバ構成の拡張" の該当セクションを参照してください。
Web ゲートウェイ経由
Web ゲートウェイも、アプリケーション・パスに継承のルールを適用します。これは特定の要求パスに一致する最も具体的なパスのアプリケーション・アクセス・プロファイルを使用します。
前のセクションの要求例 (/Accounts/Invoices) を考えた場合、Web ゲートウェイは、パスに有効なアプリケーション・アクセス・プロファイルが定義されているかどうかを次の順序で確認し、見つかった最も具体的なパスのプロファイルを適用します。
-
/Accounts/Invoices
-
/Accounts
-
/ (root)
Web ゲートウェイは、/csp および / (root) パスのアプリケーション・アクセス・プロファイルを自動的に定義します。
新規またはアップグレードしたインスタンスについて、Web アプリケーションを提供するよう Web サーバを自動構成することをインストーラに許可するたびに、インストーラは最近インストールまたはアップグレードしたインスタンスに要求をルーティングするように、既存の /csp および / (root) アプリケーション・アクセス・プロファイルを上書きします。不便を避けるために、/csp パス内のアプリケーション (/csp/foo/bar など) を手動で構成する際に、/csp の下位のパス (/csp/foo や /csp/foo/bar など) のアプリケーション・アクセス・プロファイルを定義します。
アプリケーション・パスでは大文字と小文字が区別されます。あいまいさが生じるため、アプリケーション・パスにドット (ピリオド) を含めることはできません。パス /csp/samples/menu.csp/csp/foo/bar/baz.cls を例として考えると、Web ゲートウェイでは、これを /csp/samples/menu.csp/csp/foo/bar/baz.cls に対する要求とも、/csp/samples/menu.csp に対する REST 要求 (この場合、PATH_INFO は /csp/foo/bar/baz.cls) とも解釈できます。
InterSystems IRIS アプリケーション・サーバへ
InterSystems IRIS アプリケーション・サーバは、Web ゲートウェイから要求を受け取ると、要求の相対 URL パスをその InterSystems IRIS インスタンスで構成された Web アプリケーションの名前と照合しようとします。次に、Web アプリケーションの適切なコードを呼び出します。Web サーバや Web ゲートウェイと同様に、アプリケーション・サーバも継承のルールを適用します。/Accounts/Invoices に対する要求を考えた場合、アプリケーション・サーバはまず /Accounts/Invoices アプリケーションのアプリケーション・コードを呼び出そうとします。そのようなアプリケーションが定義されていない場合は、/Accounts アプリケーションのアプリケーション・コードを呼び出そうとします。
単一の Web サーバで複数の InterSystems IRIS インスタンスをホストし、特定のアプリケーション要求のターゲットを特定のインスタンスにすることもできます。前の例で考えると、組織には Payable インスタンス (ベンダーへの支払を追跡するため) と Receivable インスタンス (顧客からの支払を追跡するため) があると思われます。どちらのインスタンスも同じ /Accounts/Invoices アプリケーションのコードをホストしていますが、データが異なります。単一の Web サーバで Payable と Receivable の両方から /Accounts/Invoices データを利用できるようにするには、要求 URL は、ターゲット・アプリケーション・サーバが要求とアプリケーションを照合する機能を妨げずに、ターゲット・インスタンスを識別する必要があります。このセクションの残りの部分では、これを実現する方法について説明します。
複数の InterSystems IRIS サーバ上のターゲット・アプリケーション
InterSystems IRIS Web アプリケーションの中には、単一の InterSystems IRIS インスタンスに固有の機能を提供するものもあります。例えば、どのインスタンスにも、管理ポータル Web アプリケーションを提供するコードが含まれます。しかし、管理ポータルは特定の 1 つのインスタンスを管理するためのインタフェースを提供します。
複数の InterSystems IRIS インスタンスがあるシステムでは、インスタンスの CSPConfigName パラメータをアプリケーション・パスの接頭語として含むパスのアプリケーション・アクセス・プロファイルを構成することで、特定のインスタンスに宛てた要求をルーティングすることができます。既定では、このパラメータはすべて小文字のインスタンス名です。InterSystems IRIS アプリケーション・サーバは、要求に応えて呼び出すアプリケーション・コードを決定する前に、要求に関連するアプリケーション・パスの先頭から CSPConfigName の値を破棄します。これにより、Web サーバと Web ゲートウェイは、CSPConfigName を接頭語として使用して、インスタンスのアプリケーションの動作をカスタマイズすることなく、そのインスタンスを一意にターゲット指定することができます。
以下の図に示されているシステムを考えてみます。
-
Web クライアントは、iris2 インスタンスの管理ポータルのホーム・ページのアプリケーション・パスを要求します。アプリケーション・パスには、ターゲット・インスタンス (iris2) の既定の CSPConfigName が接頭語として付いています。
-
架空の Apache Web サーバの構成指示文は、/iris2 パス内のすべての相対 URL パスに送信された要求に対して Web ゲートウェイを呼び出します。これには、クライアントの現在の要求が含まれます。
-
Web ゲートウェイ構成内で、アプリケーション・アクセス・プロファイルは /iris2 パス内の要求を iris2 というサーバ・アクセス・プロファイルに関連付けます。
-
Web ゲートウェイは、サーバ・アクセス・プロファイル iris2 で指定された IP アドレスとポートの InterSystems IRIS アプリケーション・サーバに要求を送信します。
-
iris2 インスタンスの InterSystems IRIS アプリケーション・サーバは、要求の相対パスの最初の部分を破棄します。インスタンスの CSPConfigName の既定値 (インスタンス名) に一致するためです。パスの残りの部分 (/csp/sys/UtilHome.csp) に基づいて、/csp/sys アプリケーションの適切なアプリケーション・コードを呼び出します。
-
/csp/sys アプリケーション・コードは Web ゲートウェイに応答を返し、Web ゲートウェイは Web サーバを介して要求をクライアントに返します。
InterSystems IRIS インストーラは、インストールまたはアップグレード時に Web サーバに接続するようにインスタンスを自動構成する際、インスタンスの既定の CSPConfigName に対応する Web サーバ構成指示文と Web ゲートウェイのアプリケーション・アクセス・プロファイルが自動的に追加されます。インスタンスの Web ゲートウェイを手動で構成する場合は、Web サーバを構成し、このアプリケーション・アクセス・プロファイルを手動で追加する必要があります。(まだインスタンスのサーバ・アクセス・プロファイルを追加していない場合は、最初にこれを追加する必要があります。)
Windows システムでは、Web 接続の詳細が変更された InterSystems IRIS インスタンスに対して InterSystems IRIS ランチャーを有効にするには、追加の構成が必要です。"システム管理ガイド" の "リモート・サーバ接続の定義" を参照してください。
カスタムのインスタンス接頭語を使用した各 InterSystems IRIS サーバのアドレス指定
InterSystems IRIS アプリケーション・サーバのインスタンス名を Web アプリケーション URL に表示したくない場合は、このセクションで説明する手順に従い、指定された名前とアプリケーション・アクセス要件は、自分の名前とアプリケーション・アクセス要件に置き換えてください。
例えば、iris1 および iris2 という 2 つのインスタンスに管理ポータルを提供したいが、以下の図に示すように、iris1 の代わりに walter という名前を使用し、iris2 の代わりに perry という名前を使用するとします。
これらの代替名を使用して、各インスタンスに管理ポータルを提供するには、以下の手順を実行します。
-
以下の条件が両方とも満たされていることを確認します。
-
Web サーバが、/walter/csp/sys および /perry/csp/sys (または親ディレクトリ) に送信された要求に対して Web ゲートウェイを呼び出している。
-
Web ゲートウェイ構成に、適宜名前が付けられた iris1 と iris2 の両方のサーバ・アクセス・プロファイルが含まれている。
-
-
iris1 インスタンスの ObjectScript シェルで、以下のコマンドを実行します。
d $System.CSP.SetConfig("CSPConfigName","walter")
-
iris2 インスタンスの ObjectScript シェルで、以下を実行します。
d $System.CSP.SetConfig("CSPConfigName","perry")
-
Web ゲートウェイ管理ページで、[デフォルトサーバ] が iris1 であるアプリケーション・パス /walter/csp/sys (または /walter/csp、または /walter) のアプリケーション・アクセス・プロファイルを追加します。
-
[デフォルトサーバ] が iris2 であるアプリケーション・パス /perry/csp/sys (または /perry/csp、または /walter) のアプリケーション・アクセス・プロファイルを追加します。
CSPConfigName は、CSP 構成名のコンマ区切りリストも受け入れます。これにより、単一ではなく複数の構成名を持つことができます。以下はその例です。
d $System.CSP.SetConfig("CSPConfigName","perry,perry1,perry2,perry3")
他の CSP グローバル・パラメータを確認するには、%SYS>d $system.CSP.DisplayConfig() と入力します。
Windows システムでは、変更された Web 接続の詳細を使用して InterSystems IRIS インスタンスに対して InterSystems IRIS ランチャーを有効にするには、追加の構成が必要です。"システム管理ガイド" の "リモート・サーバ接続の定義" を参照してください。
Apache 仮想ホストの構成
前のセクションで説明したインスタンス接頭語メカニズムの代替手段として、Web ゲートウェイでは仮想ホスト名の使用をサポートし、複数の InterSystems IRIS インスタンスでアプリケーションを提供しています。Apache 仮想ホストは、単一の Web サーバを使用して、異なるホスト名で異なるアプリケーションを透過的に提供する手段を提供します。仮想ホストの詳細は、Apache のドキュメント (https://httpd.apache.org/docs/2.4/vhosts/Opens in a new tab) を参照してください。
例えば、単一の Apache Web サーバで 2 つの異なる Web サイト (www.virtualhost1.com と www.virtualhost2.com) の InterSystems IRIS アプリケーションをホストするように構成できます。
Web サーバのグローバル構成で、仮想ホスト名への要求に対して Web ゲートウェイを呼び出すように Web サーバを構成した場合、Web ゲートウェイは仮想ホスト名の要求を特定の InterSystems IRIS インスタンスにルーティングできます。2 つのスラッシュ (//) で始まるアプリケーション・パスのアプリケーション・アクセス・プロファイルを作成するだけです。
以下の構成手順により、Web ゲートウェイは www.virtualhost1.com/csp/sys/UtilHome.csp の要求を IRISserv1 というインスタンスの管理ポータルのホーム・ページに送信し、www.virtualhost2.com/csp/sys/UtilHome.csp の要求を IRISserv2 というインスタンスの管理ポータルのホーム・ページに送信できるようになります。
-
Web ゲートウェイ管理ページのメイン・メニューに移動します。
-
irisserv1 と irisserv2 のサーバ・アクセス・プロファイルを作成します。
-
//virtualhost1.com/csp/sys/ と //virtualhost2.com/csp/sys/ のアプリケーション・アクセス・プロファイルを作成します。次のように構成します。
-
パス //virtualhost1.com/csp/sys/ のサーバ 0 をサーバ・アクセス・プロファイル irisserv1 に設定します。
-
パス //virtualhost2.com/csp/sys/ のサーバ 0 をサーバ・アクセス・プロファイル irisserv2 に設定します。
-
Web ゲートウェイはアプリケーション・アクセス・プロファイルでの仮想ホスト名の使用をサポートしていますが、<VirtualHost> 指示文ブロック内での Web ゲートウェイを呼び出すための Apache 構成指示文 (CSPFileTypes と CSP On/Off) の発行はサポートされておらず、これを行うとエラーが発生します。つまり、目的の仮想ホストのみに対して Web ゲートウェイを有効にすることはできません。Web サーバのグローバル構成内で Web ゲートウェイを有効にする必要があります。
Windows システムでは、変更された Web 接続の詳細を使用して InterSystems IRIS インスタンスに対して InterSystems IRIS ランチャーを有効にするには、追加の構成が必要です。"システム管理ガイド" の "リモート・サーバ接続の定義" を参照してください。