基础 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 /
以便继续从根目录提供资源服务。