反向代理服务器是在外围网络(也称为隔离区 [DMZ] 或屏蔽子网)中部署的计算机,可处理来自 Internet 的请求并将其转发到内部网络的计算机中。 代表反向代理服务器转发请求将会为组织防火墙后面的计算机标识进行掩膜,从而保护内部计算机免受 Internet 用户的直接攻击。 可以在反向代理服务器中实施其他安全功能,以进一步保护内部网络,以防外部用户访问。
如果您的反向代理服务器支持健康检查功能,您可以使用 Portal for ArcGIS 的健康检查端点来确定门户是否可以接收请求。 这有助于快速确定站点中是否存在软件或硬件故障。 有关详细信息,请参阅 ArcGIS REST API 中的门户健康检查主题。
警告:
必须在联合任何 ArcGIS Server 站点与您的 ArcGIS Enterprise 门户之前执行本主题中详细说明的配置。 不支持在将 ArcGIS Server 站点与您的门户联合后添加 DNS 别名或反向代理。 如果需要在组织 URL 中更改主机名,请联系 Esri 专业服务或其他受信任的咨询合作伙伴以获取指导。
取消联合 ArcGIS Server 站点会导致多个严重后果,且不易撤销。 有关详细信息,请参阅管理联合服务器。
将 Portal for ArcGIS 添加至反向代理服务器
将 Portal for ArcGIS 添加到组织的反向代理服务器之前,必须完成以下操作:
- 配置反向代理服务器上的 HTTPS(HTTP 和 HTTPS 或仅 HTTPS)。 默认情况下,Portal for ArcGIS 使用 HTTPS 进行通信。 有关如何设置 HTTPS 的信息,请参阅代理服务器的产品文档。
注:
Portal for ArcGIS 不支持通过反向代理服务器/负载均衡器进行 SSL 卸载。 因此,如果您的配置使用反向代理服务器,则其必须将流量转发到 ArcGIS Web Adaptor 或通过 HTTPS 直接转发到 Portal for ArcGIS。
验证代理服务器是否支持 gzip 编码,以及是否已配置为允许 Accept-Encoding 标头。 此标头允许通过 gzip 编码压缩 HTTP 1.1 响应。 例如,如果允许此标头,则加载 Map Viewer 的请求将向浏览器返回一个大小约为 1.4 MB 的压缩响应。 如果不允许此标头或忽略此标头,则请求将向浏览器返回一个未经压缩的响应,其大小约为 6.8 MB。 如果网络速度很慢,那么在不压缩响应的情况下加载 Map Viewer 可能需要很长时间。 Esri 建议您允许此标头作为反向代理服务器配置的一部分。
将 ArcGIS Web Adaptor 添加到代理服务器指令
通过直接向代理指令添加组件可在使用 Portal for ArcGIS 配置 ArcGIS Web Adaptor 以后,将 ArcGIS Web Adaptor 与组织的反向代理服务器结合使用。 例如,如果您正在使用 Apache 作为反向代理服务器,则需要将 ArcGIS Web Adaptor 添加到 Apache web 服务器配置文件 httpd.conf 的 ProxyPass 指令中:
ProxyPass /webadaptorname https://webadaptorhost.domain.com/webadaptorname
ProxyPassReverse /webadaptorname https://webadaptorhost.domain.com/webadaptorname
ProxyPass 指令必须与为 ArcGIS Web Adaptor 指定的名称(以上示例中为 /webadaptorname)相匹配。 如果您站点的 URL 不是以默认字符串 /arcgis 结尾,则需要指定 ArcGIS Web Adaptor 的非默认名称(例如 /myorg)。
准备反向代理
在部署反向代理服务器以用于门户之前,Esri 建议您配置一些反向代理标头以确保正确通信。
在反向代理服务器的负载配置中,设置 X-Forwarded-Host 标题以匹配反向代理的主机名称。 Portal for ArcGIS 应该在反向代理发送的标头中设置此属性,并返回与反向代理服务器 URL 相匹配的请求。 如果您没有使用 ArcGIS Web Adaptor,请另外将主机标题设置为与运行 Portal for ArcGIS 的计算机名称相同。 可以使用计算机 API 来验证 Portal for ArcGIS 计算机的主机名。
例如,对 Portal for ArcGIS REST 端点 (https://reverseproxy.domain.com/arcgis/sharing/rest) 的请求将向客户端返回相同的 URL。 如果未设置此属性,Portal for ArcGIS 可能会返回请求已定向的内部计算机的 URL(例如 https://portal.domain.com/arcgis/sharing/rest,而不是 https://reverseproxy.domain.com/arcgis/sharing/rest)。 这会带来问题,因为客户端将无法访问 URL(通常称为浏览器 404 错误)。 此外,这还向客户端授予对某些内部计算机信息的访问权限。
通过 X-Forwarded-Host 标头,您的反向代理服务器必须能够直接重定向(HTTP 代码 301 或 302)。 您还应该更新其 Location 标头,以确保完全限定域名 (FQDN) 和响应上下文与门户的 WebContextURL 值相匹配。
设置 WebContextURL 属性
门户的 WebContextURL 属性可为发送到最终用户的所有资源构建正确的 URL。
注:
如果您不在部署中使用 ArcGIS Web Adaptor,请确保反向代理服务器的上下文名称仅深入一个 URL 级别。 例如,您的反向代理 URL 可以为 https://proxy.domain.com/enterprise,但是不能为 https://proxy.domain.com/myorg/enterprise。
- 打开 Web 浏览器并以门户组织中默认管理员角色成员的身份登录到 ArcGIS Portal Directory。 URL 地址格式为 https://portal.domain.com:7443/arcgis/portaladmin。
- 单击系统 > 属性 > 更新属性。
- 在更新系统属性对话框中,插入以下 JSON,将您自己的反向代理服务器或 DNS 别名 URL 替换为组织防火墙以外的用户所看到的 URL。
{ "WebContextURL": "https://reverseproxy.domain.com/enterprise" }
注:
Portal for ArcGIS 仅支持单个 DNS。
注:
设置 WebContextURL 属性时,无法使用非标准端口(即除 443 以外的端口)。
- 单击更新属性。
恢复管理任务
通过门户配置反向代理服务器后,现在您将通过反向代理服务器 URL 而非 ArcGIS Web Adaptor URL 访问门户。 您在门户网站或 ArcGIS Portal Directory 中访问的任何内容都将返回反向代理服务器 URL。
应使用反向代理服务器 URL 重新执行以下管理任务:
如果已将受保护的服务以项目的形式添加到门户中,您需要删除原始项目并重新添加这些项目。 这是因为原始项目使用的是 ArcGIS Web Adaptor URL,而非反向代理服务器 URL。 有关说明,请参阅连接到安全服务。
使用门户配置反向代理服务器后,您可能需要调整其设置。 例如,如果部署中的操作或请求失败,并显示指示连接超时的错误,则可能是由于您的反向代理服务器的超时值过短。 要修复此错误,请考虑增加超时值以使长时间运行的请求(如联合服务器)能够完成。