dispatch.yaml 配置文件

地区 ID

REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

详细了解区域 ID

dispatch.yaml 可以替换路由规则。您可以使用 dispatch.yaml 根据网址中的路径或主机名向特定服务(以前称为模块)发送传入请求。

如需了解详情,请参阅请求的路由方式

一个应用只能有一个 dispatch.yaml 文件,该文件中的路由规则将应用于应用的所有服务和版本。路由规则也适用于 cron 文件任务队列配置中使用的网址。

部署调度文件

dispatch.yaml 文件可以位于源代码目录中的任意位置。

要在不改变当前服务版本的情况下部署调度配置文件,请根据您的环境,在包含调度文件的目录中使用下面其中一种命令:

gcloud

gcloud app deploy dispatch.yaml

Maven

mvn appengine:deployDispatch dispatch.yaml

Gradle

gradle appengineDeployDispatch dispatch.yaml

IDE

如果您使用 IntelliJEclipse,则可以使用部署表单来选择要部署的各个配置文件。

如需详细了解部署命令,请参阅部署 Java 8 应用

语法

dispatch.yaml 文件中的根元素是 dispatch:,其中包含由以下子元素指定的路由定义列表。

您在调度文件中定义的规则必须使用 HTTP 网址格式,这种格式采用“.”表示法分隔子网域。不支持使用 HTTPS“-dot-”表示法定义的网址。

调度规则按顺序执行,并且将仅应用与网址匹配的第一项规则。

元素 说明
service

指定服务的名称,该服务将处理与 url 格式匹配的请求。请注意,服务以前称为模块。

url

url 元素中,您可以定义网址格式,其中可以包含长度不超过 100 个字符的主机名和网址路径。对于 service 元素,请指定您希望用于处理传入请求的服务的名称,其中这些请求需要与 url 元素的网址格式匹配。

提示:您可以在 url 元素中包含 * 通配符等 Glob 格式;但是,这些格式只能在主机名的前面和网址路径的末尾使用。

一种网址格式,可包含主机名和网址路径。Glob 字符可用于匹配网址格式。Glob 字符只能在格式的开头和末尾指定。在引号内指定网址格式。

调度文件不会路由以 /_ah/ 开头的网址路径。

示例

下面的示例调度文件会将请求路由到 https://simple-sample.uc.r.appspot.com,并将 https://simple-sample.uc.r.appspot.com/favicon.ico 等请求路由到 default 服务。所有静态内容均由 default 服务提供。像 https://simple-sample.uc.r.appspot.com/mobile/ 这样的移动请求会路由到移动前端,而像 https://simple-sample.uc.r.appspot.com/work/ 这样的工作器请求会路由到静态后端。

dispatch:
  # Default service serves the typical web resources and all static resources.
  - url: "*/favicon.ico"
    service: default

  # Default service serves simple hostname request.
  - url: "simple-sample.uc.r.appspot.com/"
    service: default

  # Send all mobile traffic to the mobile frontend.
  - url: "*/mobile/*"
    service: mobile-frontend

  # Send all work to the one static backend.
  - url: "*/work/*"
    service: static-backend

如果您更倾向于使用可与大量可能的请求相匹配的宽泛路由规则,则可以定义范围更广泛的规则。例如:

# Send any path that begins with “simple-sample.uc.r.appspot.com/mobile” to the mobile-frontend service.
- url: "simple-sample.uc.r.appspot.com/mobile*"
  service: mobile-frontend

# Send any domain/sub-domain with a path that starts with “work” to the static backend service.
- url: "*/work*"
  service: static-backend

您也可以编写更严格的表达式:

# Matches the path "/fun", but not "/fun2" or "/fun/other"
- url: "*/fun"
  service: mobile-frontend

# Matches the hostname 'customer1.myapp.com', but not '1.customer1.myapp.com.
- url: "customer1.myapp.com/*"
  service: static-backend

限制

调度文件最多可包含 20 个路由规则。指定网址字符串时,主机名和路径的长度均不能超过 100 个字符。

删除所有调度规则

要删除所有调度规则,请执行以下操作:

  1. 如下所示修改 dispatch.yaml 文件的内容:

    dispatch: []
    
  2. dispatch.yaml 文件部署到 App Engine。