负载均衡器(load balancer)路径规则配置:子路径转发失效求助
解决方案:Google Cloud Load Balancer 路径转发保留子路径
针对你遇到的长路径无法携带子路径转发的问题,核心是要在URL映射(URL Map)中配置前缀匹配规则+路径重写,具体配置步骤如下:
1. 准备后端服务
确保你已经为两个端口分别创建了独立的后端服务:
backend-3000:关联运行middleware_1的VM实例组,指定目标端口为3000backend-4000:关联运行middleware_2的VM实例组,指定目标端口为4000
2. 配置URL映射规则
在URL Map中添加以下4条路径规则(注意规则优先级:精确匹配 > 前缀匹配):
规则1:处理短路径 /1
- 匹配类型:精确匹配
- 路径:
/1 - 关联后端服务:
backend-3000
规则2:处理 /1/* 前缀的长路径
- 匹配类型:前缀匹配
- 路径:
/1/* - 路径重写:
$1 - 关联后端服务:
backend-3000
规则3:处理短路径 /2
- 匹配类型:精确匹配
- 路径:
/2 - 关联后端服务:
backend-4000
规则4:处理 /2/* 前缀的长路径
- 匹配类型:前缀匹配
- 路径:
/2/* - 路径重写:
$1 - 关联后端服务:
backend-4000
3. 配置逻辑说明
- 前缀匹配
/1/*会捕获所有以/1/开头的请求,比如/1/v1/test - 路径重写
$1会提取通配符*对应的部分(即v1/test),转发到后端服务时会将路径替换为/$1,最终后端收到的请求路径就是/v1/test - 精确匹配规则用于处理不带子路径的短请求
/1和/2,避免这些请求被前缀匹配规则拦截后重写出错
常见错误排查
你之前尝试的/pclearing/*或/pclearing/无效,大概率是两个原因:
- 没有配置路径重写:LB默认会将完整路径(包括前缀
/pclearing/)转发到后端,而你需要去掉前缀保留子路径 - 规则优先级错误:如果先配置了前缀匹配再配置精确匹配,会导致短路径请求被前缀匹配规则错误处理
后续添加App Engine实例时,只需在URL Map中新增对应的路径规则,指定关联App Engine后端服务即可,无需修改现有VM的规则配置。
内容的提问来源于stack exchange,提问作者Tommer Rissin
相关产品推荐
相关产品推荐

