You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google App Engine中部署多版本应用并配置路径路由?

实现App Engine按路径前缀路由到不同版本的方法

我来帮你搞定这个版本路由的问题!你已经知道怎么用gcloud app deploy --version=v3 .这类命令部署自定义版本了,接下来只需要配置路由规则,就能实现https://myproject.appspot.com/v2指向v2版本、/v3指向v3版本的效果,主要有两种常用方案,我给你详细拆解:

方法一:使用dispatch.yaml(推荐,集中管理路由)

这种方式是App Engine官方推荐的,因为可以在一个文件里统一管理所有路由规则,后续修改也更方便。

步骤1:创建dispatch.yaml文件

在你的项目根目录下新建一个名为dispatch.yaml的文件,内容如下:

dispatch:
  # 把所有/v2开头的请求路由到v2版本
  - url: "*/v2/*"
    service: default
    version: v2
  # 把所有/v3开头的请求路由到v3版本
  - url: "*/v3/*"
    service: default
    version: v3
  # 其他所有请求路由到默认版本(比如你的v1版本)
  - url: "*/*"
    service: default

注意:如果你的应用不是用默认服务(default),把service字段改成你实际的服务名称即可。

步骤2:部署dispatch.yaml配置

在终端里执行以下命令,把路由配置部署到App Engine:

gcloud app deploy dispatch.yaml

步骤3:验证效果

部署完成后,直接访问https://myproject.appspot.com/v2就会自动跳转到v2版本的应用,访问/v3则会指向v3版本。如果想确认是否生效,可以在每个版本的应用里加个版本标识(比如首页显示“当前版本:v2”),方便验证。

方法二:在每个版本的app.yaml中配置路由前缀

如果你不想用dispatch.yaml,也可以直接在每个版本的app.yaml里指定对应的路径前缀,让App Engine自动路由。

针对v2版本的配置

修改v2版本的app.yaml,添加对应的handler规则:

runtime: 你的运行时(比如python39、nodejs18等)
# 其他原有配置...

handlers:
  # 匹配所有/v2开头的请求
  - url: /v2/*
    script: auto  # 根据你的运行时调整,比如python用auto,nodejs也用auto
    secure: always  # 强制HTTPS,推荐开启

然后用命令部署v2版本:

gcloud app deploy --version=v2 .

针对v3版本的配置

同理,修改v3版本的app.yaml,把handler的url改成/v3/*,然后部署:

gcloud app deploy --version=v3 .

这种方式的缺点是路由规则和每个版本的代码绑定,后续如果要修改路由前缀,需要重新部署对应版本,灵活性不如dispatch.yaml。

一些注意事项

  • 确保你已经成功部署了v2和v3版本,不然路由规则会找不到对应的版本,返回404。
  • 如果需要调整默认版本(比如让根路径/指向v1版本),可以用命令:gcloud app services set-traffic default --splits v1=100
  • 测试时可以用gcloud app browse --version=v2直接打开v2版本的预览页面,确认应用本身正常运行。

内容的提问来源于stack exchange,提问作者Myone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:06:32