App Engine默认版本live可访问,但指定live版本域名无法访问的问题咨询
这问题我之前碰到过类似的,给你梳理几个最可能的原因和排查步骤:
先确认版本是否真的部署成功
有时候App Engine控制台显示“部署完成”,但后台可能还在做最后初始化。去App Engine的「版本」列表页面,找到live版本,确认它的状态是「已部署」(不是部署中、出错或者停止状态)。也可以用命令行工具确认:gcloud app versions list输出里找live版本的STATUS列,确保是
SERVING。检查版本ID的拼写和大小写
App Engine的版本ID是严格区分大小写的!比如你部署时用的版本ID是Live(首字母大写),但访问域名里写的是live,就会导致无法访问。去版本列表里复制live版本的实际ID,和你访问域名里的live部分完全对比,确保没有拼写错误。排查路由规则冲突
如果你的项目里用了dispatch.yaml自定义路由,或者在app.yaml里设置了版本相关的路由规则,可能会干扰版本特定域名的访问。比如有没有规则把所有请求都定向到默认版本?检查dispatch.yaml里的规则,确保没有覆盖版本路由的配置。另外,默认版本的路由优先级不会影响版本特定域名的访问,但自定义规则可能会,这点要注意。清除缓存或切换环境测试
浏览器缓存的旧DNS记录可能导致解析错误。试试用隐身模式打开live版本的域名,或者换个浏览器/设备访问。也可以用nslookup命令检查域名解析:nslookup live-dot-(myservice)-dot-(myapp).appspot.com看看返回的IP是否和默认域名的解析结果处于同一个范围(App Engine的IP是动态的,但属于谷歌的云服务段)。
查看版本的访问日志
即使默认版本能访问,也不代表live版本的服务完全正常。去App Engine控制台的「日志」页面,选择live版本,然后过滤访问请求,看看有没有来自live-dot-xxx域名的请求,以及返回的状态码(比如404、500)。如果请求根本没出现在日志里,说明域名解析或路由有问题;如果有错误状态码,就对应排查服务本身的问题。
先从这几个方向排查,应该能找到问题所在。
内容的提问来源于stack exchange,提问作者Peter Fortuin

