Google App Engine配置dispatch.yaml路由时service字段填写问题
GAE dispatch.yaml配置问题解答
核心概念说明
GAE中的service是部署在GAE平台上的独立运行服务单元,和你本地项目的模块名、Spring Boot主类名没有任何绑定关系:
- 如果你在服务对应的
app.yaml配置文件中没有手动指定service字段,部署后该服务的默认名称为default - 如果你手动给服务指定了名称,部署后GAE才会识别你自定义的服务名
你之前填back、my-server-application报错的本质原因是:GAE平台上根本不存在这两个名称的已部署服务,自然无法创建路由规则。
路由方案说明
你要把带/api/的请求转发到Spring Boot后端的需求,用dispatch.yaml实现是完全正确的,按以下步骤操作即可:
- 先分别部署后端Spring Boot服务、前端Angular服务,不要先部署dispatch规则
- 执行命令
gcloud app services list查看当前GAE下所有已存在的服务,找到后端对应的服务名- 如果你没给后端单独配过服务名,这里查到的后端服务名就是
default,直接填这个值即可
- 如果你没给后端单独配过服务名,这里查到的后端服务名就是
- 修正dispatch.yaml配置,示例如下:
dispatch: - url: "*/api/*" service: default # 替换成你上一步查到的实际后端服务名
- 确认两个服务都正常运行后,再部署dispatch.yaml规则即可生效
*注意:路由规则里引用的服务必须是已经成功部署到GAE、能在服务列表中查询到的服务,顺序搞反先部署dispatch规则一定会触发参数无效报错。
可选自定义配置
如果你想让后端服务名和你本地模块名保持一致为back,只需要在后端项目的app.yaml文件最顶部添加一行配置:
service: back
重新部署后端服务后,再把dispatch.yaml里的service字段值改成back即可正常路由。
内容的提问来源于stack exchange,提问作者Eva
相关产品推荐
相关产品推荐

