Skip To Content

使用 ArcGIS Notebook Server 设置反向代理服务器

反向代理服务器是在外围网络(也称为隔离区 [DMZ] 或屏蔽子网)中部署的计算机,可处理来自 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 ServerWebContextURL 属性。 这有助于 ArcGIS Notebook Server 在发送给最终用户所有资源上构造的正确 URL。

注:

使用 WebContextURL 属性将 ArcGIS Notebook Server URL 设置为与其 ArcGIS Web Adaptor 的 URL 匹配(例如 /notebook)。

执行以下操作以更改 WebContextURL 属性:

  1. 以具有管理员权限的用户身份登录至 ArcGIS Notebook Server Administrator Directory (https://notebookserver.domain.com:11443/arcgis/admin)。
  2. 单击系统 > 属性 > 更新
  3. 属性文本框中,插入以下 JSON,将您自己的 ArcGIS Notebook Server URL 替换为所在组织防火墙以外的用户所看到的 URL。
    {
       "WebContextURL": "https://notebookserver.domain.com/notebook"
    }
  4. 单击更新
  5. 重新启动 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>