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