能否通过Google Cloud Load Balancer将公网流量路由至Cloud Run URL?配置遇阻求助
解决Cloud Run + Google Cloud Load Balancer路由404问题
以下是针对你遇到的The requested URL / was not found on this server报错的排查和修复步骤:
1. 确认Cloud Run服务本身的可用性
直接访问你的Cloud Run服务完整域名(比如xxx.a.run.app),测试根路径/是否能正常响应。如果Cloud Run本身没有处理/路径的逻辑,GCLB转发后自然会返回404——先确保服务端的端点配置没问题。
2. 修正公网NEG的Host头配置
Cloud Run基于Host头进行路由,GCLB转发请求时如果未携带正确的Cloud Run域名作为Host头,服务会无法识别请求并返回404:
- 进入GCLB的后端服务配置页面,找到对应Cloud Run的后端服务
- 添加请求头修改规则,将
Host头设置为你的Cloud Run服务完整域名(比如my-service-123.a.run.app)
3. 检查URL映射的路径匹配规则
结合你提供的规则截图,需确保路径匹配逻辑和后端服务预期一致:
- 若要将根路径
/转发到Cloud Run,路径匹配规则建议设为/*(匹配所有子路径)或精确匹配/ - 检查规则优先级,确保没有更高优先级的规则拦截
/路径的请求 - 确认URL映射中,根路径对应的后端确实是你配置的Cloud Run公网NEG
4. 验证转发配置的正确性
用gcloud命令查看当前配置,确认所有环节无误:
# 查看转发规则详情 gcloud compute forwarding-rules describe YOUR_FORWARDING_RULE_NAME --region=YOUR_REGION # 查看URL映射配置 gcloud compute url-maps describe YOUR_URL_MAP_NAME
5. 多服务路由的最佳实践
若要通过单个DNS暴露多个Cloud Run服务和其他端点,建议用URL映射做路径拆分:
- 例如配置
/service-a/*对应Cloud Run服务A的NEG,/service-b/*对应服务B的NEG,/对应默认服务 - 每个后端服务需单独配置对应的Host头,确保请求能被正确的Cloud Run服务处理
内容的提问来源于stack exchange,提问作者luisvenezian
相关产品推荐
相关产品推荐

