ArcGIS Mission Server でのリバース プロキシの構成

リバース プロキシ サーバーとは、境界ネットワーク (DMZ (DeMilitarized Zone) またはスクリーン サブネットとも呼ばれる) に配置され、インターネットからのリクエストを処理して内部ネットワーク内のコンピューターに転送するコンピューターです。 リバース プロキシ サーバーは、リクエストを転送することで、組織サイトのファイアウォールの内側にあるコンピューターのアイデンティティをマスクするため、インターネット ユーザーによる直接的な攻撃から内部のコンピューターを保護できます。 さらに進んでユーザーの内部ネットワークを外部ユーザーから保護するために、追加のセキュリティ機能をリバース プロキシ サーバーに実装できます。

リバース プロキシ サーバーが状態チェック機能に対応している場合は、 ArcGIS Mission Server の状態チェック エンドポイントを使用して、サイトがリクエストを受け取れるかどうかを確認できます。 これは、サイトでソフトウェアまたはハードウェアの障害があるかどうかを迅速に確認する場合に便利です。 これを実行するには、https://machine.domain.com:20443/arcgis/rest/info/healthcheck などへ移動します。

注意:

10.9 以降、管理者は、 ArcGIS Mission Server で Apache HTTPD をよりシームレスに構成できるようになりました。 管理者は、管理 API である「プロキシ構成の生成」エンドポイント経由で Apache プロキシ構成ファイルを生成することができます。

プロキシ構成の生成

管理者は、 ArcGIS Mission Server の管理 API を通じて Apache HTTPD を構成できるようになりました。

  1. 管理者権限を持つユーザーとして、 ArcGIS Mission Server Administrator Directory (https://machine.domain.com:20443/arcgis/admin/proxyGen) にサイン インします。
  2. リバース プロキシの [Top Context] を入力します。たとえば、topcontext を入力すると、プロキシ ディレクティブがリクエストを https://my.reverse.proxy/topcontext にルーティングします。 このコンテキストは、リクエストのプロトコルとコンテキストに基づいてプロキシ ディレクティブとルート リクエストを適切に書き込むために使用されます。
  3. [Set Context URLs?] チェックボックスをオンにします。 これにより、リクエストの送信時に、適切な ArcGIS Mission Server WebContextURL および WebSocketContextURL システム プロパティが自動的に設定されるようになります。
  4. リバース プロキシ サーバーの [Proxy FQDN] を入力します。たとえば、my.reverse.proxy を入力すると、プロキシ ディレクティブがリクエストを https://my.reverse.proxy/topcontext にルーティングします。
  5. 目的の出力 [Format] を選択します。
  6. デフォルトの出力形式は html ですが、構成ファイルを json または file として出力するように選択できます。
  7. [Submit] をクリックします。
  8. これで、Apache HTTPD 構成ファイルの生成と適切な ContextURL システム プロパティの設定が正常に完了しました。 次に、このファイルに表示される情報を読み取ってから、必要に応じて Apache HTTPD プロキシに適用する必要があります。 この方法については、それぞれの配布のドキュメントをご参照ください。

手動でのリバース プロキシ サーバーへの ArcGIS Mission Server の追加

組織のリバース プロキシ サーバーは、対応する URL をプロキシ ディレクティブに追加して ArcGIS Mission Server と直接通信するように構成できます。

Apache HTTP サーバーをリバース プロキシとして構成するには、Apache モジュールである mod_sslmod_proxymod_proxy_http mod_proxy_wstunnel を有効化します。 Apache モジュールを有効化するには、Apache のドキュメントを参照して、プラットフォーム固有の構成場所を確認してください。 例:

LoadModule ssl_module modules/mod_ssl.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

リバース プロキシとしての Apache HTTP サーバーの構成を完了するには、ProxyPass ディレクティブと ProxyPassMatch ディレクティブの組み合わせを設定し、正しい SSL 設定値を設定する必要があります。 ArcGIS Mission Server では HTTPS が使用されます。このため、 ArcGIS Mission Server にアップロードされたのと同じ証明書を使用するように Apache HTTP サーバーの SSL を構成する必要もあります。

##
## SSL Virtual Host Context
##
<VirtualHost _default_:443>
 
## Enable Proxy for SSL
SSLProxyEngine on
 
## If using a self-signed certificate on ArcGIS Mission Server, disable strict
## certificate verification
SSLProxyVerify none
 
## Proxy ArcGIS Mission Server URLs to the proper backend ports
## The order of these directives are important.

ProxyPass /topcontext/missions/ wss://machine.domain.com:20301/arcgis/missions/ disablereuse=On

ProxyPass /topcontext/ https://machine.domain.com:20443/arcgis/
ProxyPassReverse /topcontext/ https://machine.domain.com:20443/arcgis/
 
## Use the same SSL Certificate and Key as ArcGIS Mission Server
## (adjust path to your specific certificate locations)
SSLCertificateFile    /path/to/arcgis/mission/<server_cert>.pem
SSLCertificateKeyFile /path/to/arcgis/mission/<private_key>.pem
 
## End of ArcGIS Mission Server reverse proxy config                         https://machine.domain.com:20443/arcgis/

ArcGIS Mission Server がクライアントへの WebSocket 接続を適切に確立できるようにするには、 ArcGIS Mission Server WebContextURL および WebSocketContextURL システム プロパティを設定する必要があります。 これにより、 ArcGIS Mission Server はすべてのリソースで正しい URL を構築して、エンド ユーザーに送信することができます。 次の手順に従って、WebContextURL および WebSocketContextURL を変更します。

  1. 管理者権限を持つユーザーとして、 ArcGIS Mission Server Administrator Directory (https://machine.domain.com:20443/arcgis/admin) にサイン インします。
  2. [System] > → [Properties] → > [Update Properties] の順にクリックします。
  3. [Properties] テキスト ボックスに次の JSON を挿入します。 ArcGIS Mission Server の URL は、ユーザーが組織のファイアウォールの外側から参照できる URL に置換します。
    {
       "WebContextURL": "https://machine.domain.com/mygis",
    "WebSocketContextURL":"wss://machine.domain.com/mygis"
    }
  4. [Update] をクリックします。