使用 ArcGIS Mission Server 配置反向代理

反向代理服务器是在外围网络(也称为隔离区 [DMZ] 或屏蔽子网)中部署的计算机,可处理来自 Internet 的请求并将其转发到内部网络的计算机中。 通过转发请求,反向代理服务器会为组织防火墙后面的计算机标识进行掩膜,以此保护内部计算机免受 Internet 用户的直接攻击。 可以在反向代理服务器中实施其他安全功能,以进一步保护内部网络,以防外部用户访问。

如果您的反向代理服务器支持健康检查功能,您可以使用 ArcGIS Mission Server 运行状况检查端点来确定站点是否可以接收请求。 这有助于快速确定站点中是否存在软件或硬件故障。 例如,要执行此操作,请浏览至 https://machine.domain.com:20443/arcgis/rest/info/healthcheck

注:

从 Enterprise 10.9 版本开始,管理员可以更顺畅地配置 Apache HTTPD 和 ArcGIS Mission Server。 管理员现在可以通过 Admin API 的“生成代理配置”端点生成 Apache 代理配置文件。

生成代理配置

管理员现在可以通过 ArcGIS Mission Server Admin API 配置 Apache HTTPD。

  1. 以具有管理员权限的用户身份登录到 ArcGIS Mission Server 管理员目录,网址为 https://machine.domain.com:20443/arcgis/admin/proxyGen
  2. 输入反向代理的顶部上下文值;例如,输入 topcontext 会产生将请求路由到 https://my.reverse.proxy/topcontext 的代理指令。 该上下文将用于编写代理指令,并根据请求协议和上下文适当地路由请求。
  3. 选中设置上下文 URL 复选框可使系统在提交请求时自动设置适当的 ArcGIS Mission Server WebContextURLWebSocketContextURL 系统属性。
  4. 对于代理 FQDN,输入反向代理服务器的完全限定域名 (FQDN),例如,my.reverse.proxy 会产生将请求路由到 https://my.reverse.proxy/topcontext 的代理指令。
  5. 对于格式,请选择一个输出格式。
  6. 默认输出格式为 html,但是您可以选择将配置文件输出为 jsonfile
  7. 单击提交

    您已经成功生成了 Apache HTTPD 配置文件并设置了正确的 ContextURL 系统属性。 接下来,您将需要阅读此文件中显示的信息,然后根据需要将其应用于 Apache HTTPD 代理。 要执行此操作,请参阅相应文档。

ArcGIS Mission Server 手动添加至反向代理服务器

可通过将相应的 URL 添加到代理指令,将组织的反向代理服务器配置为直接与 ArcGIS Mission Server 进行通信。

要将 Apache HTTP Server 配置为反向代理,需要启用 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 Server 配置为反向代理,需要设置 ProxyPassProxyPassMatch 指令组合,并设置正确的 SSL 设置。 ArcGIS Mission Server 使用 HTTPS;因此,还需要将 Apache HTTP Server SSL 配置为使用上传到 ArcGIS Mission Server 的相同证书:


##
## 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 WebContextURLWebSocketContextURL 系统属性。 这有助于 ArcGIS Mission Server 在所有资源上构造发送给最终用户的正确 URL。 执行以下操作以更改 WebContextURLWebSocketContextURL 属性:

  1. 以具有管理员权限的用户身份登录到 ArcGIS Mission Server 管理员目录,网址为 https://machine.domain.com:20443/arcgis/admin
  2. 单击系统 > 属性 > 更新
  3. 属性文本框中,插入以下 JSON,将您自己的 ArcGIS Mission Server URL 替换为所在组织防火墙以外的用户所看到的 URL。
    {
       "WebContextURL": "https://machine.domain.com/mygis",
    "WebSocketContextURL":"wss://machine.domain.com/mygis"
    }
  4. 单击更新