App Engine Dispatch规则针对域名未按顺序匹配的问题咨询
问题原因分析
最初的dispatch.yaml配置存在两个核心问题,导致第一个规则无法匹配https://red-service-dot-myproject.ey.r.appspot.com/auth请求:
1. 第一个规则的URL模式仅匹配根路径
你的第一个规则定义为:
- url: "red-service-dot-myproject.ey.r.appspot.com/" service: red-service
这个模式仅严格匹配域名根路径(即路径为/的请求),当请求路径是/auth时,路径部分与规则中的/不匹配,因此第一个规则不会被触发。
2. 全局通配符规则覆盖了目标域名的非根路径
后续规则中的*/auth/api/*、*/api/*、*/*都是全局通配符规则,其中*/*会匹配任意域名下的任意非根路径请求。当/auth请求无法匹配第一个规则时,会继续向下匹配,最终命中*/*规则,被路由到green-service。
正确的修正方案
要让red-service域名下的所有请求都优先路由到red-service,需要修改第一个规则的URL模式,添加路径通配符*:
- url: "red-service-dot-myproject.ey.r.appspot.com/*" service: red-service
这样该规则会匹配red-service-dot-myproject.ey.r.appspot.com域名下的所有路径请求(包括/、/auth、/api等),由于规则按顺序匹配,后续的全局规则就不会生效了。
内容的提问来源于stack exchange,提问作者Simone Mariottini
相关产品推荐
相关产品推荐

