You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP外部LB URL重写:如何保持域名显示并转发至目标域名

解决GCP外部负载均衡器URL重写问题

你的核心问题在于后端服务指向错误,同时路径匹配范围不够,导致host_rewrite没起到实际作用。以下是修正后的Terraform配置:

path_matcher {
  name            = "domain1-matcher"
  default_service = domain1.service # 保留默认服务,处理非/baz开头的请求

  path_rule {
    paths   = ["/baz/*"] # 改为通配符,匹配/baz下所有子路径(包括cat.json)
    service = domain2.service # 关键:指向domain2的后端服务,而非domain1
    route_action {
      url_rewrite {
        host_rewrite = "domain2" # 修改转发到后端的Host头为domain2
        path_prefix_rewrite = "/foo/bar/" # 将路径前缀/baz替换为/foo/bar
      }
    }
  }
}

关键改动说明

  • 路径匹配调整:把["/baz/"]改成["/baz/*"],这样能覆盖/baz/cat.json这类具体子路径的请求,原配置只能匹配/baz/本身。
  • 后端服务切换:必须将service指向domain2.service——你要获取domain2的内容,就得让负载均衡器把请求转发到domain2对应的后端服务,之前指向domain1的服务,host_rewrite只是改了Host头,但后端还是domain1的资源,自然拿不到domain2的内容。
  • url_rewrite逻辑:host_rewrite会修改发送给后端服务的HTTP Host头为domain2,确保后端服务能正确识别请求;path_prefix_rewrite会把请求路径的/baz前缀替换成/foo/bar,最终转发到后端的路径就是/foo/bar/cat.json,同时浏览器地址栏始终显示domain1/baz/cat.json。

额外注意事项

  • 确认domain2.service这个后端服务已正确配置,且其关联的后端实例能处理带有domain2 Host头的请求。
  • 检查负载均衡器的目标HTTP(S)代理已关联此URL映射,且前端配置正确绑定了domain1的域名。
  • 你的Google Provider 4.39.0版本完全支持这些配置字段,无需升级。

内容的提问来源于stack exchange,提问作者kela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:55:23