Google Cloud负载均衡器路径映射不生效 子路径访问存储桶返回NoSuchKey
Google Cloud负载均衡子路径请求GCS返回NoSuchKey解决方案
根因说明
你遇到的NoSuchKey报错核心原因是Google Cloud负载均衡默认会把完整请求路径透传给后端GCS存储桶:
你请求https://dashboard.XXXX.com/mini/upload/top-view-meeple-board-game-pieces.jpg时,GCS会尝试查找桶内路径为mini/upload/top-view-meeple-board-game-pieces.jpg的对象,而你的对象实际存放在upload/top-view-meeple-board-game-pieces.jpg路径下,自然找不到对应资源。
解决步骤
- 第一步:确认路径匹配规则优先级
确保你配置的/mini/*路径规则优先级高于根路径/*的规则,GCP URL映射按最长前缀匹配逻辑执行,更具体的路径规则需要优先生效。 - 第二步:给
/mini/*规则配置URL重写
进入对应URL映射的编辑页,找到/mini/*对应的后端服务配置,添加URL重写规则:- 路径前缀匹配填
/mini/ - 路径前缀替换填
/
配置完成后,/mini/upload/xxx.jpg的请求会被重写为/upload/xxx.jpg再转发给GCS,和正常根路径请求的路径完全一致,即可找到对应的存储对象。
- 路径前缀匹配填
- 第三步:验证配置生效
配置更新后需要等待1-2分钟负载均衡规则全局同步,再测试带/mini前缀的请求即可。
异常排查
如果配置重写后仍然报错,可检查两项配置:
- 确认GCS桶的IAM权限已经给负载均衡的服务账号授予了
roles/storage.objectViewer权限 - 确认你配置的
/mini/*路径规则确实关联到了正确的GCS后端存储桶,没有错绑其他后端服务
内容的提问来源于stack exchange,提问作者Ishaan Puniani
相关产品推荐
相关产品推荐

