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

GCP API网关对接多个Cloud Run后端返回404错误配置问题咨询

问题排查与修复方案

1. 路径请求返回404的原因与修复

核心原因是GCP API网关默认的路径转发规则导致后端匹配不到接口:

  • 你在操作级定义的x-google-backend默认会将请求的完整路径直接拼接在后端服务地址后转发。比如你请求网关的/dql/deleteFolder路径,会直接转发到https://backend-dql-flask-uc.a.run.app/dql/deleteFolder,如果你的后端Flask服务实际暴露的接口路径是/deleteFolder(无/dql前缀),后端就会返回404错误。
  • 另外请确认修改配置后已经重新部署API网关,且部署过程无报错,新配置已生效。

修复方案二选一即可:

  • 方案1:调整后端接口路径,匹配网关定义的路径前缀,比如第二个服务的接口统一添加/dql前缀。
  • 方案2:在x-google-backend配置中添加路径重写规则,修改对应路径的转发逻辑,示例配置如下:
# /dql/deleteFolder 路径下的x-google-backend配置调整为
x-google-backend:
  address: https://backend-dql-flask-uc.a.run.app
  path_rewrite: '/deleteFolder'

如果有多个/dql开头的路径,可以用正则匹配批量重写,规则为path_rewrite: '/dql/(.*)' : '/\1'。

2. 直接访问Cloud Run原生URL无需认证的原因与修复

  • 该问题和API网关配置无关,是Cloud Run本身的IAM权限配置导致:如果Cloud Run服务的权限配置中允许allUsers拥有roles/run.invoker(调用者)权限,就会支持未认证直接访问。你配置的JWT认证仅在网关层生效,不会覆盖Cloud Run本身的访问控制规则。

修复步骤:

  • 进入每个Cloud Run服务的权限管理页面,删除allUsers对应的roles/run.invoker权限。
  • 单独为你的API网关服务账号授予roles/run.invoker权限,确保只有网关可以调用后端Cloud Run服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:54:04