リバースプロキシ
PTC の Web ベース製品では、ユーザーがファイアウォールの内部と外部からサイトにログインできます。ユーザーがファイアウォールの外部から PTC 製品にログインする場合、PTC では、インフラストラクチャへの不正侵入のリスクを最小化できるよう支援します。PTC が提供するエンタープライズ Web ベースアプリケーションに外部のエンタープライズリソースがアクセスするための方法として、リバースプロキシ設定の使用があります。
以下のセクションでは、さまざまなソリューションを作成および設定する方法について説明します。ただし、可能なすべての設定を網羅しているわけではありません。以下のセクションは基本的知識として活用し、習得した内容を個々の状況に応用してください。
バックグラウンド
リバースプロキシは、プロキシサーバーの特殊な展開例です。リバースプロキシでは、リバースプロキシサーバーは以下の場所に配置できます。
• ファイアウォールの外部
• ファイアウォールの内部
• 外部クライアントにコンテンツサーバーを示す非武装地帯 (DMZ、2 つのファイアウォールの間の領域) の内部
リバースプロキシを展開すると、Web サーバーをクライアントに実際に公開することなく、Web サーバーから提供された特定のコンテンツを公開できます。
リバースプロキシでは、プロキシサーバーは対象のクライアントに対して Web サーバーのように機能します。内部クライアントと異なり、外部クライアントはプロキシサーバーにアクセスするように再設定されません。代わりに、サイトの URL ではプロキシが Web サーバーであるかのように、クライアントをプロキシにルーティングします。レプリケーション済みコンテンツは、プロキシキャッシュから外部クライアントに配信され、ファイアウォールの内側の安全な場所にある元のサーバーやプライベートネットワークは公開されません。
以下の図に、リバースプロキシ設定の基本的なコンポーネントの一部を示します。この図では、2 つのファイアウォール間にプロキシサーバーがあります。
このような設定は基本的な例です。2 つのファイアウォールの間の領域は非武装地帯 (DMZ) と呼ばれます。第三者がプロキシサーバーの制御を取得しても、アプリケーションサーバーの制御を取得することや、アプリケーションサーバーの場所を知られることはありません。クライアントシステムとプロキシサーバーの間、およびプロキシサーバーと Web サーバーの間にファイアウォールがあることに注意してください。この 2 番目のファイアウォールにより、環境のセキュリティレベルは非常に高くなっています。
基本的なリバースプロキシ設定
リバースプロキシサーバーを使用するように環境を設定するには、以下のような 2 つのホストマシンを使用する必要があります。
• 1 つのホストに、Web サーバーを設定してプロキシ Web サーバーとして使用します。たとえば、server1.mycompany.com という名前の server1 ホストに PTC HTTP Server をインストールします。
• 2 番目のホストに Windchill を設定します。たとえば、"server2.mycompany.com" という名前の server2 ホストに Windchill をインストールします。
各ホスト上に次のような完了すべき一意のタスクがあります。
• Windchill サーバーホスト (server2) では、以下のファイルを更新します。
◦ セクション「Windchill ホスト上の wt.properties の更新」の指示に従って wt.properties を更新します。
◦ セクション「Windchill ホスト上の web.xml の更新」の指示に従って web.xml を更新します。
• プロキシサーバーホスト (server1) で、セクション「Windchill ホスト上の wt.properties の更新」の指示に従ってプロキシ Web サーバーの httpd.conf ファイルを更新します。
さらに、セクション「リバースプロキシサーバーでの HTTPS の使用」の説明に従って、HTTPS を使用して安全にアクセスできるようにリバースプロキシサーバーを設定できます。
Windchill ホスト上の wt.properties の更新
| wt.properties ファイルを更新する場合は、 Windchill シェル内から xconfmanager ユーティリティを使用します。このユーティリティの使用方法については、 xconfmanager ユーティリティについてを参照してください。 |
リバースプロキシによるアクセスに必要なクライアントについて、Windchill ホスト名がリバースプロキシサーバーに割り当てられなければなりません。リバースプロキシサーバーを参照する送信 Windchill URL を生成するには、次のプロパティを wt.properties ファイルで設定する必要があります。これらのプロパティによって、Windchill サーバーコードベースがリバースプロキシコードベースにマッピングされます。
wt.server.codebase=http://<プロキシサーバーのホスト名>[:<ポート>]/<Web アプリケーション名>
wt.httpgw.mapCodebase=http:// <Windchill ホスト名>[:<ポート>]/<Web アプリケーション名>
リバースプロキシ wt.properties の例
次のステートメントが true であると仮定します。
• リバースプロキシホストの完全修飾名は、server1.mycompany.com である。
• Windchill ホストの完全修飾名は、server2.mycompany.com である。
• 両ホスト上の Web サーバーは、デフォルトのポートを使用している。
• wt.adapter.simpleTaskDispatcher.minPort プロパティの値 (<タスクディスパッチャ_minPort>) は、デフォルト値の 18080 である。
• Windchill が Windchill サーバーホストにインストールされたときに定義された Web アプリケーション名 (<Web アプリケーション名>) は Windchill である。
この場合、xconfmanager ユーティリティを使用して設定される wt.properties プロパティは、次のとおりです。
wt.rmi.clientSocketFactory=wt.boot.WTRMIMasterSocketFactory
wt.rmi.javarmicgi=servlet/JavaRMIServlet
wt.server.codebase=http://server1.mycompany.com/Windchill
wt.httpgw.mapCodebase=http://server2.mycompany.com/Windchill
Windchill ホスト上の web.xml の更新
(codebase ディレクトリの WEB_INF サブディレクトリにある) web.xml ファイルでの JavaRMIServlet に対するサーブレット宣言で設定したポートは、ポート範囲の使用により自動的に処理されます。範囲の最小値から最大値までが順番に使用されます。値は wt properties ファイルの次のプロパティに格納されます。
• wt.manager.port
• wt.method.minPort
• wt.method.maxPort
範囲を変更するには、xconfmanager ユーティリティを使用してプロパティを設定します。
minPort と maxPort のデフォルト値はそれぞれ 5002 と 5011 です。
<servlet>
<servlet-name>JavaRMIServlet</servlet-name>
<description>RMI over HTTP proxy</description>
<servlet-class>wt.tools.javarmi.JavaRMIServlet</servlet-class>
<init-param>
<param-name>minPort</param-name>
<param-value>5002</param-value>
</init-param>
<init-param>
<param-name>maxPort</param-name>
<param-value>5011</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JavaRMIServlet</servlet-name>
<url-pattern>/servlet/JavaRMIServlet/*</url-pattern>
</servlet-mapping>
リバースプロキシサーバーとしての Apache ベース Web サーバーの設定
このセクションに示すリバースプロキシサーバーの例では、Apache httpd サーバーの構成については最小限の説明に留めています。PTC は特定のリバースプロキシ製品を推奨またはサポートしていません。リバースプロキシの実装にはそれぞれ異なる要件があり、これらの要件をシステム管理者とネットワーク管理者が評価する必要があります。
httpd.conf ファイルの次の行からコメント文字を削除します。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
httpd.conf ファイルの末尾に、次の各行を追加します (ページ幅に合わせて一部の行を分割しています)。
ProxyPass /<Web アプリケーション名>/ http://<Windchill ホスト名>/
<Web アプリケーション名>/ProxyPassReverse /
<Web アプリケーション名>/ http://<Windchill ホスト名>/<Web アプリケーション名>/
/* To access Solr URL on Reverse Proxy Server */
ProxyPass /<Web アプリケーション名>-Solr/ http://<Windchill ホスト名>[:<port>]/
<Web アプリケーション名>-Solr/
ProxyPassReverse /<Web アプリケーション名>-Solr/
http://<Windchill ホスト名>[:<port>]/<Web アプリケーション名>-Solr/
ここで、<Web アプリケーション名> および <Windchill ホスト名> の値は、セクション「Windchillホスト上の wt.properties の更新」で入力した値と同じです。
リバースプロキシサーバーでの HTTPS の使用
通常、リバースプロキシサーバーを使用するには、すべての受信トラフィックが HTTPS でなければなりません。前の設定手順に従って、HTTPS リバースプロキシサーバーを
Windchill の HTTP Web サーバーの代用として使用できます。ただし、リバースプロキシサーバーの URL に対する参照では、HTTP プロトコルでなく、HTTPS プロトコルと正しいポートを参照する必要があります。内部のユーザーに HTTP の使用を許可しているときに外部のユーザーが HTTPS の使用を要求している場合には、2 つの
Windchill サーバー (HTTPS URL で構成したサーバーと HTTP URL で構成したサーバー) を使用してください。HTTPS URL と HTTP URL の詳細については、
HTTP と HTTPS のデュアルプロトコルシステムを参照してください。