反向代理和网络#

反向代理是一种服务器,它将来自客户端的请求转发到一个或多个上游服务器。它接收来自客户端的请求,处理这些请求,然后将请求转发到适当的上游服务器。上游服务器将响应返回给反向代理,然后反向代理将响应发送回客户端。

在 AI Workbench 中,我们使用反向代理将您的 Web 浏览器的请求定向到项目容器及其中的应用程序。这种设计选择简化了连接到远程位置的过程,只需一个 SSH 隧道即可访问在特定位置运行的所有项目和应用程序。

概述#

Traefik 用作 AI Workbench 的反向代理。当 AI Workbench 服务器启动时,它会在容器中自动运行。

所有项目容器都在名为 workbench 的自定义桥接网络中运行。由于这种网络配置以及 AI Workbench 启动项目容器的方式,您无法直接连接到在这些容器中运行的应用程序。但是,代理在桥接网络上运行,并端口映射到主机上的端口 10000。这意味着您可以从主机与代理通信,代理会根据需要路由到隔离的项目容器中的应用程序。

代理仅在 localhost 上可用,没有 SSL/TLS 配置。远程位置自动使用 SSH 隧道安全地访问代理。

动态配置#

注意

只有 webapp 类应用程序使用反向代理。

Traefik 代理配置由 AI Workbench 自动动态管理。这意味着作为用户,您无需担心手动配置 Traefik。每个 “webapp” 类应用程序都根据其在项目规范文件中的配置通过代理路由,确保您的应用程序被正确路由和访问。

当您启动 webapp 类应用程序时,AI Workbench 会在 $HOME/.nvwb/traefik-configs 目录中为 Traefik 写入配置文件。此文件包含 Traefik 正确路由您的应用程序所需的配置详细信息。Traefik 检测配置文件的任何更改,并自动重新加载和调整路由。

配置应用程序以在代理后工作#

  • 根据您的应用程序,您可能需要额外的配置才能使其在代理后工作

  • 环境变量 PROXY_PREFIX 可供使用。它包含应用程序运行的路由。格式如下:/projects/<项目名称>/applications/<应用程序名称>

  • 应用程序具有 “trim prefix” 选项。如果启用,代理会在路由到应用程序之前剥离 PROXY_PREFIX。这对于不需要前缀的 API 等非常有用。

如果您的 webapp 需要“知道”其运行的路由才能正常运行,则环境变量 PROXY_PREFIX 始终在启动时注入到应用程序进程中。此环境变量的格式为 /projects/PROJECT_NAME/applications/APP_NAME

此外,您可以为您的应用程序启用 “trim prefix” 选项。此选项指示代理在路由到应用程序之前剥离 PROXY_PREFIX 值,这对于不需要前缀的 API 等非常有用。

例如,如果您的应用程序名为 “myapp”,并且它在名为 “myproject” 的项目中,则该应用程序将在 https://127.0.0.1:10000/projects/myproject/applications/myapp 上可用。如果启用 “trim prefix” 选项,代理会在将请求路由到您的应用程序之前删除 projects/myproject/applications/myapp