Google App Engine 子域名部署服务路由至默认服务问题求助
Google App Engine子域名路由错误排查方案
排查步骤
- 第一步:确认dispatch.yaml已正确部署
运行gcloud app deploy dispatch.yaml重新部署规则,部署完成后执行gcloud app describe查看返回的dispatchRules字段,确认你的三条路由规则都已同步生效,避免本地修改后未部署到云端的问题。 - 第二步:检查App Engine自定义域名映射
进入Google Cloud控制台,依次打开App Engine > 设置 > 自定义域名页面,确认beta.example.com已被添加到当前项目的域名列表中,且对应SSL证书状态为「已生效」。仅在DNS服务商添加CNAME记录不足以让GAE识别该子域名请求,必须先在GAE后台完成域名绑定,未绑定的子域名请求会默认路由到default服务。 - 第三步:调整dispatch规则匹配顺序
GAE的路由规则是从上到下按优先级匹配,先命中的规则优先生效。你可以将beta.example.com的规则调整到最顶部,确保子域名请求不会被其他规则误匹配,调整后的配置参考:
调整后重新部署dispatch.yaml再测试。dispatch: - url: "beta.example.com/*" service: betaversion - url: "example.com/*" service: default - url: "otherwebsite.com/*" service: betaversion - 第四步:排除缓存干扰验证路由结果
不要直接用浏览器测试,避免本地DNS缓存、浏览器静态资源缓存导致的结果偏差,使用curl命令直接查看请求路由信息:
查看返回头中的curl -I https://beta.example.comX-AppEngine-Service字段值,即可确认GAE实际将请求路由到了哪个服务。如果该字段值已经是betaversion,说明路由配置已经生效,清理本地缓存即可正常访问。 - 第五步:移除冗余规则测试
暂时删除otherwebsite.com对应的路由规则,仅保留根域名和beta子域名的两条规则,排除跨域名路由规则冲突的可能性。
内容的提问来源于stack exchange,提问作者shaedopotato
相关产品推荐
相关产品推荐

