后端代理

Trunk 自带内置代理,可以在运行 trunk serve 时启用。 有两种配置代理的方式,每种方式将在下面讨论。 所有 Trunk 代理都将透明地将请求体、标头和查询参数传递给代理后端。

代理 CLI 标志

trunk serve 命令接受两个与代理相关的标志。

--proxy-backend 指定后端服务器的 URL,请求应代理到该服务器。 给定 URL 的 URI 段将用作 Trunk 服务器上处理代理请求的路径。 例如,trunk serve --proxy-backend=http://localhost:9000/api/ 将把路径 /api/ 上收到的任何请求代理到侦听 http://localhost:9000/api/ 的服务器。 进一步的路径段或查询参数将无缝传递。

--proxy-rewrite 指定 Trunk 服务器要监听代理请求的备用 URI。 在给定 URI 上收到的任何请求都将被重写以匹配代理后端的 URI,从而有效地剥离重写前缀。 例如,trunk serve --proxy-backend=http://localhost:9000/ --proxy-rewrite=/api/ 将把在 /api/ 上收到的任何请求代理到 http://localhost:9000/,并从请求中剥离 /api/ 前缀,而 /api/ 前缀之后的所有内容将保持不变。

--proxy-insecure 允许 --proxy-backend url 对 https 使用自签名证书(或任何官方无效证书,包括过期证书)。 这将用于代理到 https,例如 trunk serve --proxy-backend=https://localhost:3001/ --proxy-insecure,其中 ssl 证书是自签名的,例如使用 mkcert,并通过 https 反向代理(例如 local-ssl-proxycaddy)路由到后端。

--proxy-no-sytem-proxy 绕过系统代理来连接代理后端。

--proxy-ws 指定代理用于 WebSocket 端点。

配置文件

Trunk.toml 配置文件接受多个 [[proxy]] 部分,这允许配置多个代理。 每个部分至少需要 backend 字段,并可选地接受 rewritews 字段,这两个字段都对应于上面讨论的 --proxy-* CLI 标志。

与其他 Trunk 配置一样,通过 CLI 声明的代理将具有最终优先级,并将导致任何配置文件代理被忽略,即使配置文件中声明了多个代理也是如此。

以下是 Trunk 仓库中 Trunk.toml 文件的一个片段

[[proxy]]
rewrite = "/api/v1/"
backend = "http://localhost:9000/"