リバース プロキシ サーバーとは、境界ネットワーク (DMZ (DeMilitarized Zone) またはスクリーン サブネットとも呼ばれる) 内に配置され、インターネットからのリクエストを処理して内部ネットワーク内のコンピューターに転送するコンピューターです。 リバース プロキシ サーバーは、リクエストを転送することで、組織サイトのファイアウォールの内側にあるコンピューターのアイデンティティをマスクするため、インターネット ユーザーによる直接的な攻撃から内部のコンピューターを保護できます。 さらに進んでユーザーの内部ネットワークを外部ユーザーから保護するために、追加のセキュリティ機能をリバース プロキシ サーバーに実装できます。
組織のリバース プロキシ サーバーを使うよう ArcGIS Notebook Server サイトを構成することができます。 これはオプションです。 組織でリバース プロキシを使用していない場合、またはリバース プロキシを使用するよう ArcGIS Notebook Server サイトを構成しない場合は、ポータルへのサイトの構成に進んでください。
リバース プロキシ サーバーへの ArcGIS Notebook Server の追加
組織のリバース プロキシ サーバーは、対応する URL をプロキシ ディレクティブに追加して ArcGIS Web Adaptor と通信するように構成する必要があります。
たとえば、リバース プロキシ サーバーとして Apache を使用している場合は、Apache Web サーバー構成ファイル httpd.conf で、ProxyPass ディレクティブに ArcGIS Web Adaptor の URL を以下のように追加する必要があります。
ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver.domain.com/notebook
WebContextURL プロパティの設定
リバース プロキシ サーバーを使用している際に、サイトの URL の末尾がデフォルト文字列 /arcgis (すべて小文字) でない場合は、ArcGIS Notebook Server の WebContextURL プロパティも設定する必要があります。 これにより、ArcGIS Notebook Server はリソースで正しい URL を構築して、エンド ユーザーに送信することができます。
メモ:
WebContextURL プロパティを使用して ArcGIS Notebook Server の URL がその ArcGIS Web Adaptor (/notebook など) に一致するように設定します。
- 管理者権限を持つユーザーとして、https://notebookserver.domain.com:11443/arcgis/admin の ArcGIS Notebook Server Administrator Directory にサイン インします。
- [system] > [properties] > [update] の順にクリックします。
- [Properties] テキスト ボックスに次の JSON を挿入します。ArcGIS Notebook Server の URL は、ユーザーが組織のファイアウォールの外側から参照できる URL に置換します。
{ "WebContextURL": "https://notebookserver.domain.com/notebook" }
- [Update] をクリックします。
- ArcGIS Notebook Server を再起動します。 Linux 上で、インストール フォルダー内の stopnotebookserver.sh スクリプトと startnotebookserver.sh スクリプトを実行します。
リバース プロキシ ヘッダーと ArcGIS Notebook Server
リバース プロキシを ArcGIS Web Adaptor と統合する際は、リバース プロキシ サーバーによって送信されるヘッダー内に次のプロパティを設定する必要があります。
X-Forwarded-Host=<FQDN of reverse proxy server>
このプロパティがヘッダーに設定されている場合、ArcGIS Web Adaptor は、そのリバース プロキシ サーバーの URL に一致するリバース プロキシ サーバーにリクエストを返します。 たとえば、ArcGIS Notebook Server Services Directory (https://reverseproxy.domain.com/arcgis/rest/services) に対するリクエストは、同じ URL としてクライアントに返されます。
X-Forwarded-Host ヘッダーが設定されていない場合、ArcGIS Web Adaptor は、リクエストが転送された内部コンピューターの URL を返すことがあります (たとえば、https://reverseproxy.domain.com/arcgis/rest/services ではなく https://notebookserver.domain.com/arcgis/rest/services)。 このような場合は、クライアントがこの URL にアクセスできなくなる (一般的に、ブラウザーの 404 エラーとして知られている) ため、問題が起こりがちになります。 また、クライアントはその内部コンピューターについての情報を一部入手することにもなります。
クライアントと ArcGIS Web Adaptor 間の通信のトラブルシューティングを行う際は、リバース プロキシ サーバーで X-Forwarded-Host ヘッダー プロパティを設定することをお勧めします。このプロパティの有無が通信障害の一般的な原因であるからです。 このヘッダーの設定方法は、ユーザーのリバース プロキシ サーバーの実装によって異なります。 たとえば、以下のように Apache は ProxyPreserveHost On ディレクティブをその構成に含めることでこれを実施します。
...
ProxyPreserveHost On
ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver.domain.com/notebook
...
元のホストのヘッダーを渡す方法については、ユーザーのリバース プロキシ サーバーの製品ドキュメントをご参照ください。
例: ArcGIS Notebook Server への Apache と Tomcat の構成
任意の Web サーバー ソフトウェアを使って ArcGIS Notebook Server にリバース プロキシを構成できます。 以下のワークフロー サンプルでは、Apache HTTP Server と Apache Tomcat を使ってリバース プロキシを設定する手順について説明します。 これはあくまでリバース プロキシ構成の一例であり、必ずしもこれに従う必要はありません。
このワークフロー サンプルでは、以下のソフトウェアとバージョンを使用し、ArcGIS Notebook Server としてすべて同じコンピューターにインストールします。
- Red Hat Enterprise Linux Server 7.5
- Apache HTTP Server , httpd 2.4.6
- Apache Tomcat 9.0.20 / OpenJDK 1.8.0
これらのソフトウェア コンポーネントは分散アーキテクチャに配置し、ArcGIS Notebook Server、Apache HTTP Server 、Apache Tomcat をそれぞれ別のコンピューターに配置できます。
ArcGIS Notebook Server と Mirantis Container Runtime のインストールと構成が完了し、ArcGIS Web Adaptor インスタンスの Java Web サーバーへのインストールが完了していて構成が終わっていない状態で以下の手順を開始します。
- Apache JServ Protocol (AJP) を使って、デフォルトで有効になっているポート 8080 で実行されるように Tomcat をインストールします。
- Tomcat ではデフォルトでポート 8443 が有効になっていないため、SSL を有効にしてポート 8443 のコネクタを追加します。
これを行うには、SSL 証明書を生成して Tomcat 構成ファイルを編集し、コネクタに追加します。 セキュリティ上のベスト プラクティスとして、TLS バージョン 1.2 だけを有効にします。
... sslProtocol="TLS" SSLProtocol="TLSv1.2" ...
- 既存の ArcGIS Web Adaptor (Java Platform) の arcgis.war ファイルを Tomcat に配置します。
たとえば、ArcGIS Web Adaptor の URL は /nbs です。
- Apache HTTP Server をインストールします。
この例では、yum パッケージ マネージャーを使用しています。 また、yum を使って SSL 機能もインストールしています。
yum install httpd -y yum install mod_ssl -y
- ssl.conf ファイルで Apache HTTP Server の SSL 証明書を構成します。
- プロキシ ルール (前のセクションで説明済み) を使って Apache httpd.conf ファイルを変更し、Tomcat の AJP ポートに ArcGIS Web Adaptor 呼び出しをプロキシします。
ProxyPass /nbs ajp://myserver.acme.com:8009/nbs ProxyPassReverse /nbs ajp://myserver.acme.com:8009/nbs
- Apache HTTP Server ssl.conf ファイルで、プロキシ ルールを使って Tomcat の AJP ポートに ArcGIS Web Adaptor SSL 呼び出しをプロキシします。 WebSocket ソケット リクエストが適切に処理されない場合、ArcGIS Notebooks が適切に開かないため、ArcGIS Notebook Server で使用される WebSocket リクエストもプロキシすることが重要です。
SSLProxyEngine On # Use RewriteEngine to handle WebSocket connection upgrades RewriteEngine On RewriteCond %{HTTP:Connection} Upgrade [NC] RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /(.*) wss://myserver.acme.com:8443/$1 [P,L] <Location "/nbs"> ProxyPreserveHost On ProxyPass ajp://myserver.acme.com:8009/nbs ProxyPassReverse ajp://myserver.acme.com:8009/nbs </Location>
- Apache HTTP Server サービスを再起動して構成の変更を適用します。
- ArcGIS Notebook Server に ArcGIS Web Adaptor を構成します。