反向代理服务器是在外围网络(也称为隔离区 [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。
- 以具有管理员权限的用户身份登录到 ArcGIS Mission Server 管理员目录,网址为 https://machine.domain.com:20443/arcgis/admin/proxyGen。
- 输入反向代理的顶部上下文值;例如,输入 topcontext 会产生将请求路由到 https://my.reverse.proxy/topcontext 的代理指令。 该上下文将用于编写代理指令,并根据请求协议和上下文适当地路由请求。
- 选中设置上下文 URL 复选框可使系统在提交请求时自动设置适当的 ArcGIS Mission Server WebContextURL 和 WebSocketContextURL 系统属性。
- 对于代理 FQDN,输入反向代理服务器的完全限定域名 (FQDN),例如,my.reverse.proxy 会产生将请求路由到 https://my.reverse.proxy/topcontext 的代理指令。
- 对于格式,请选择一个输出格式。
- 单击提交。
您已经成功生成了 Apache HTTPD 配置文件并设置了正确的 ContextURL 系统属性。 接下来,您将需要阅读此文件中显示的信息,然后根据需要将其应用于 Apache HTTPD 代理。 要执行此操作,请参阅相应文档。
将 ArcGIS Mission Server 手动添加至反向代理服务器
可通过将相应的 URL 添加到代理指令,将组织的反向代理服务器配置为直接与 ArcGIS Mission Server 进行通信。
要将 Apache HTTP Server 配置为反向代理,需要启用 Apache 模块 mod_ssl、mod_proxy、mod_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 配置为反向代理,需要设置 ProxyPass 和 ProxyPassMatch 指令组合,并设置正确的 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 WebContextURL 和 WebSocketContextURL 系统属性。 这有助于 ArcGIS Mission Server 在所有资源上构造发送给最终用户的正确 URL。 执行以下操作以更改 WebContextURL 和 WebSocketContextURL 属性:
- 以具有管理员权限的用户身份登录到 ArcGIS Mission Server 管理员目录,网址为 https://machine.domain.com:20443/arcgis/admin。
- 单击系统 > 属性 > 更新。
- 在属性文本框中,插入以下 JSON,将您自己的 ArcGIS Mission Server URL 替换为所在组织防火墙以外的用户所看到的 URL。
{ "WebContextURL": "https://machine.domain.com/mygis", "WebSocketContextURL":"wss://machine.domain.com/mygis" }
- 单击更新。