Google Cloud HTTPS Loadbalancer路由失效,请求始终命中默认后端
GCP HTTPS负载均衡器自动添加/*路由规则的问题排查与解决
为什么会自动生成/*规则?
GCP的HTTPS负载均衡器在关联Serverless NEG(对接Cloud Run这类无服务资源)时,会自动创建一条优先级最低的/*兜底路由规则。这条规则默认指向你添加的第一个后端服务(也就是你的hello-default),目的是确保所有未匹配到自定义规则的请求都有后端可以接收,避免出现无路由匹配的错误。
解决方法(关键是调整规则优先级和路径配置)
- 调整规则优先级顺序:在负载均衡器的路由规则列表里,把
/blue/*和/green/*的规则移到/*规则的前面。GCP负载均衡器是按规则顺序匹配的,排在前面的规则会先被匹配,符合路径的请求就不会落到后面的默认规则上。也可以手动设置优先级数值,数值越小优先级越高(比如给自定义规则设100,默认规则设200)。 - 配置正确的路径匹配与重写:
- 针对
hello.site.com/blue/相关请求,路径匹配要设为/blue/*(而不是仅/blue/,否则子路径请求会匹配失败)。同时必须开启路径重写,把请求路径改写为/*——因为你的hello-blue服务是监听根路径/的,如果不剥离/blue/前缀,服务会找不到对应路径返回404。同理,/green/*的规则也要做同样的路径重写配置。
- 针对
- 核对后端服务关联:确认
/blue/*规则绑定的是hello-blue的后端服务,/green/*绑定hello-green,默认/*绑定hello-default,别搞混了。 - 等待部署完成:修改规则后,负载均衡器需要几分钟时间完成配置同步,别急着马上测试,等状态显示正常后再验证。
容易踩的坑
- 只配置精确路径
/blue/:这种设置只会匹配hello.site.com/blue/这一个请求,像hello.site.com/blue/test这类子路径还是会落到默认规则上。 - 忽略路径重写:Cloud Run不会自动处理路径前缀,必须通过负载均衡器的重写功能把前缀去掉,否则服务收到的请求路径带前缀,自然返回404。
内容的提问来源于stack exchange,提问作者Mauricio
相关产品推荐
相关产品推荐

