如何在GCP负载均衡器中移除Cloud Functions/Run的路径无关前缀?
解决GCP负载均衡转发路径前缀移除问题(Cloud Functions & Cloud Run)
针对Cloud Functions的配置调整
你当前的URL掩码规则仅移除了/functions前缀,导致函数收到的路径包含/cf1这类路由标识。要实现仅保留业务路径的需求,需为每个Cloud Function单独配置路径匹配与重写规则:
- 在GCP负载均衡的URL映射中,为每个函数创建独立的路径规则:
- 针对
cf1:- 匹配路径:
/functions/cf1/{allPaths=**} - 路径重写:设置为
/{allPaths} - 绑定后端服务:选择
cf1对应的Cloud Functions后端
- 匹配路径:
- 针对
cf2:- 匹配路径:
/functions/cf2/{allPaths=**} - 路径重写:设置为
/{allPaths} - 绑定后端服务:选择
cf2对应的Cloud Functions后端
- 匹配路径:
- 针对
cf3:- 匹配路径:
/functions/cf3/{allPaths=**} - 路径重写:设置为
/{allPaths} - 绑定后端服务:选择
cf3对应的Cloud Functions后端
- 匹配路径:
- 针对
配置完成后,当请求https://mydoma.in/functions/cf1/one/two时,负载均衡会将重写后的路径/one/two转发给cf1,函数收到的就是纯业务路径。
针对Cloud Run的配置调整
Cloud Run的实现逻辑与Cloud Functions完全一致,只需将后端服务替换为对应的Cloud Run服务即可:
- 在负载均衡的URL映射中添加路径规则(可根据实际URL结构调整):
- 例如针对名为
cr1的Cloud Run服务:- 匹配路径:
/services/cr1/{allPaths=**} - 路径重写:设置为
/{allPaths} - 绑定后端服务:选择
cr1对应的Cloud Run后端服务
- 匹配路径:
- 例如针对名为
这样配置后,Cloud Run服务收到的请求路径也会自动移除路由标识前缀,仅保留业务相关部分。
注意:如果你的Cloud Run服务使用自定义域名原生路径映射,也可直接在Cloud Run控制台的自定义域名设置中配置前缀移除规则,但通过负载均衡统一管理会更便于维护。
内容的提问来源于stack exchange,提问作者Vojtěch
相关产品推荐
相关产品推荐

