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