基础 URL、公共 URL、路径 & 反向代理

始于:0.19.0-alpha.3

最初,trunk 只有一个 --public-url,它允许设置托管应用程序的基础 URL。简单明了。这是所有生成的 URL 的前缀,并作为 trunk serve 的基础。

不幸的是,生活并非如此简单,命名也很困难。

如今,trunk 有三个路径

  • “公共基础 URL”:充当所有生成的 URL 的前缀
  • “服务基础”:充当 trunk serve 服务的所有内容的范围/前缀
  • “websocket 基础”:充当自动重载 websocket 的基础路径

所有这三个都可以配置,但都有合理的默认值。默认情况下,服务基础和 websocket 基础默认为公共基础的绝对路径。如果公共基础没有斜杠,则会附加一个斜杠。公共基础可以是以下之一

  • 未设置/无/默认值(意味着 /
  • 一个绝对 URL(例如 http://domain/path/app
  • 一个绝对路径(例如 /path/app
  • 一个相对路径(例如 foo./

如果公共基础是一个绝对 URL,那么该 URL 的路径将用作服务和 websocket 基础。如果公共基础是一个相对路径,那么它将被转换为绝对路径。这两种方法都可能导致应用程序功能失常,具体取决于您的环境。控制台上会有一个警告。但是,通过使用 serve-base 或 ws-base 提供显式值,可以解决此问题。

为什么这是必要的?它在什么时候有用?它主要是为了为那些未被考虑到的情况提供所有旋钮/配置。public-url 的魔力对很多人都有效,但并非对所有人有效。为了支持这种情况,现在可以调整所有设置,但代价是增加了复杂性。拥有合理的默认值应该使简单的情况保持简单。

一个示例用例是在 trunk serve *前面*的反向代理,它无法配置为在 trunk serve 期望的位置提供 trunk websocket 服务。现在,可以使用 --public-url 在生成链接时选择基础,以便在由代理服务时看起来是正确的。但也可以使用 --serve-base / 以便继续从根目录提供资源服务。