是否可以从 GCP 负载均衡器重写对后端服务(例如 Cloud 运行)的传入请求?

Is it possible to rewrite an incoming request to the backend service (e.g. Cloud Run) from a GCP load balancer?

我有两个服务 运行 Cloud Run 例如 api1api2

我在 GCP 中设置了一个 global external HTTP(S) load balancer (classic) 来路由到这两个服务的路径。

比如

Paths Action Backend
/api1/* Route traffic to a single backend service-api1
/api2/* Route traffic to a single backend service-api2

当我发送请求 mydomain/api1/aaa/ccc/ 时,api1 收到请求 url 作为 mydomain/api1/aaa/ccc/

当我发送请求 mydomain/api2/ddd/eee/ 时,api2 收到请求 url 作为 mydomain/api2/ddd/eee/

有没有办法重写 api1 的传入请求,以便 api1 将请求视为 mydomain/aaa/ccc/

这也适用于 api2,因此 api2 会将请求视为 mydomain/ddd/eee/

来自Rewrite documentation,

The load balancer provides the following mutually exclusive primary actions:

  • Reads the incoming URL in the request.
  • Replaces the host, the path, or both the host and the path, transforming the URL before directing traffic to the backend service or backend bucket.

我认为有办法,但我没能成功。

有什么建议吗?

在负载均衡控制台页面

  1. Select Advanced host and path rule (URL redirect, URL rewrite)Host and path rules

  1. 如下添加路径规则并编辑路径规则(显示 Add-On 操作)

  1. 保存并更新更改。

当您发送请求 mydomain/api1/aaa/ccc/ 时,api1 会将请求视为 mydomain/aaa/ccc/