将反向代理服务器与 ArcGIS Server 结合使用
在本主题中
反向代理服务器是在外围网络(也称为隔离区 [DMZ] 或屏蔽子网)中部署的计算机,可处理来自 Internet 的请求并将其转发到内部网络的计算机中。以反向代理服务器的名义转发请求会为组织防火墙后面的计算机标识进行掩膜,因此保护内部计算机免受 Internet 用户的直接攻击。可在反向代理服务器中实现附加安全功能以进一步阻止外部用户访问内部网络。
如果您的反向代理服务器支持健康检查功能,您可以使用 ArcGIS Server 的健康检查端点来确定站点是否可以接收请求。这有助于快速确定站点中是否存在软件或硬件故障。有关详细信息,请参阅 ArcGIS REST API 中的健康检查。
将 ArcGIS Server 添加到反向代理服务器
通过直接向代理指令添加组件可将 ArcGIS Server 和 ArcGIS Web Adaptor 与组织的反向代理服务器结合使用。例如,如果您正在使用 Apache 作为反向代理服务器,则需要将 ArcGIS Server 添加到 Apache Web 服务器 配置文件 httpd.conf 中的以下 ProxyPass 指令中:
ProxyPass /arcgis http://gisserver.domain.com:6080/arcgis
ProxyPassReverse /arcgis http://gisserver.domain.com:6080/arcgis
如果您正在使用反向代理服务器,而您站点的 URL 并非以默认字符串 /arcgis(全部小写)结尾,则还应设置 ArcGIS Server 的 WebContextURL 属性。这样可以帮助 ArcGIS Server 为发送到最终用户的所有资源构建正确的 URL。要更改 WebContextURL,请执行以下操作:
- 以具有管理员权限的用户身份登录到位于 http://gisserver.domain.com:6080/arcgis/admin 的 ArcGIS Server 管理员目录。
- 单击系统 > 属性 > 更新。
- 在属性文本框中,插入以下 JSON,将您自己的 ArcGIS Server URL 替换为所在组织防火墙以外的用户所看到的 URL。
{ "WebContextURL": "http://gisserver.domain.com/mygis" }
- 单击更新。
- 在站点中的每个 GIS 服务器上重新启动 ArcGIS Server。在 Windows 中,这可以通过重新启动每台计算机上的 ArcGIS Server Windows 服务来实现。
反向代理标题和 ArcGIS Server
将反向代理与 ArcGIS Server 或 ArcGIS Web Adaptor 集成时,请注意这两个组件都可能会显示由反向代理服务器发送的在标题中设置的以下属性:
X-Forwarded-Host=<FQDN of reverse proxy server>
如果在标题中设置该属性,ArcGIS Server 和 ArcGIS Web Adaptor 会将请求返回到与反向代理服务器的 URL 相匹配的反向代理服务器。例如,对 ArcGIS Server 服务目录 (http://reverseproxy.domain.com/arcgis/rest/services) 的请求会返回到具有相同 URL 的客户端。
如果未设置 X-Forwarded-Host 标题属性,ArcGIS Server 和 ArcGIS Web Adaptor 可能会返回请求所指向的内部计算机的 URL,例如 http://gisserver.domain.com/arcgis/rest/services 而不是 http://reverseproxy.domain.com/arcgis/rest/services。这会带来问题,因为客户端将无法访问 URL(通常称为浏览器 404 错误)。而且,客户端将掌握一些有关内部计算机的知识。
在排除客户端与 ArcGIS Server 或 ArcGIS Web Adaptor 之间的通信故障时,建议您在反向代理服务器中设置 X-Forwarded-Host 标题属性,因为这是导致通信失败的常见原因。设置该标题的方式取决于您的反向代理服务器实现。例如,Apache 会通过以下配置中的 ProxyPreserveHost On 指令完成此设置:
...
ProxyPreserveHost On ProxyPass /arcgis http:///arcgis ProxyPassReverse /arcgis http:///arcgis
...
有关如何通过原始托管标题的指导信息,请参阅反向代理服务器的产品文档。