反向代理服务器是在外围网络(也称为隔离区或屏蔽子网)中部署的计算机,可处理来自 Internet 的请求并将其转发到内部网络的计算机中。 通过转发请求,反向代理服务器会为组织防火墙后面的计算机标识进行掩膜,从而保护内部计算机,使其免受 Internet 用户的直接攻击。 可以在反向代理服务器中实施其他安全功能,以进一步保护内部网络,以防外部用户访问。
您可以配置 ArcGIS Notebook Server 站点以使用组织的反向代理服务器。 此操作是可选的。 如果您的组织尚未使用反向代理服务器,或者您不想配置 ArcGIS Notebook Server 站点使用反向代理服务器,则可以使用门户配置站点。
将 ArcGIS Notebook Server 添加至反向代理服务器
您的组织的反向代理服务器必须配置为通过向代理目录添加相应 URL 的方法与 ArcGIS Web Adaptor 进行通信。
例如,如果您正在使用 Apache 作为反向代理服务器,则需要将 ArcGIS Web Adaptor URL 添加到 Apache Web 服务器配置文件 httpd.conf 中的以下 ProxyPass 指令中:
ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver.domain.com/notebook
大多数反向代理服务器都具有可配置的客户端连接超时。 当达到连接超时时,ArcGIS Notebook Server 用于与 Python 核通信的 websocket 连接将断开,并且笔记本中将出现通知。 如果这种情况以一致的时间间隔发生,例如在重新连接到核后的每 1、3 或 5 分钟发生一次,则应调查网络路径的连接超时并相应地增加超时。
设置 WebContextURL 属性
如果您正在使用反向代理服务器,而您站点的 URL 并非以默认字符串 /arcgis(全部小写)结尾,则还应设置 ArcGIS Notebook Server 的 WebContextURL 属性。 这有助于 ArcGIS Notebook Server 在发送给最终用户所有资源上构造的正确 URL。
注:
使用 WebContextURL 属性将 ArcGIS Notebook Server URL 设置为与其 ArcGIS Web Adaptor 的 URL 匹配(例如 /notebook)。
- 以具有管理员权限的用户身份登录至 ArcGIS Notebook Server Administrator Directory (https://notebookserver.domain.com:11443/arcgis/admin)。
- 单击系统 > 属性 > 更新。
- 在属性文本框中,插入以下 JSON,将您自己的 ArcGIS Notebook Server URL 替换为所在组织防火墙以外的用户所看到的 URL。
{ "WebContextURL": "https://notebookserver.domain.com/notebook" }
- 单击更新。
- 重新启动 ArcGIS Notebook Server。 在 Windows 中,重新启动 ArcGIS Server Windows 服务。
反向代理标题和 ArcGIS Notebook Server
将反向代理与 ArcGIS Web Adaptor 集成时,反向代理服务器发送的标题中必须设置以下属性:
X-Forwarded-Host=<FQDN of reverse proxy server>
如果在标题中设置该属性,ArcGIS Web Adaptor 会将请求返回到与反向代理服务器的 URL 相匹配的反向代理服务器。 例如,对 ArcGIS Notebook Server 服务目录 (https://reverseproxy.domain.com/arcgis/rest/services) 的请求会以相同的 URL 返回到客户端。
如果未设置 X-Forwarded-Host 标题属性,则 ArcGIS Web Adaptor 可能会返回请求已定向的内部计算机的 URL,例如 https://notebookserver.domain.com/arcgis/rest/services,而不是 https://reverseproxy.domain.com/arcgis/rest/services。 这会带来问题,因为客户端将无法访问 URL(通常称为浏览器 404 错误)。 而且,客户端将获得有关内部计算机的一些信息。
在排除客户端与 ArcGIS Web Adaptor 之间的通信故障时,建议您在反向代理服务器中设置 X-Forwarded-Host 标题属性,因为这是导致通信失败的常见原因。 设置该标题的方式取决于您的反向代理服务器实现。
有关如何通过原始托管标题的指导信息,请参阅反向代理服务器的产品文档。
为高可用性 ArcGIS Notebook Server 站点配置反向代理服务器
在实现具有多个注册到单个 ArcGIS Notebook Server 站点的运行 ArcGIS Web Adaptor 的后端目标的反向代理服务器时,必须考虑其他注意事项。
ArcGIS Notebook Server 使用 websocket 连接与 Python 核进行通信。 这些 websocket 连接将创建一个有状态会话,必须由反向代理配置维护。 这称为会话粘性,需要 7 层(应用程序)负载均衡器来实现。
可以通过以下方式在 Apache 中实现正确的会话粘性:Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://web_adaptors_https>
BalancerMember https://notebook1.domain.com:443 route=notebook1
BalancerMember https://notebook2.domain.com:443 route=notebook2
BalancerMember https://notebook3.domain.com:443 route=notebook3
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
将安全 websocket (WSS) 连接代理到相同的后端目标也十分重要:<Proxy balancer://web_adaptors_wss>
BalancerMember wss://notebook1.domain.com:443 route=notebook1
BalancerMember wss://notebook2.domain.com:443 route=notebook2
BalancerMember wss://notebook3.domain.com:443 route=notebook3
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>