配置服务路由

媒体 CDN 提供高级 HTTP 路由功能,可让您以精细的级别将流量映射到特定的边缘配置和源。

配置路由规则

为媒体 CDN 服务配置路由规则。

控制台

  1. 在 Google Cloud 控制台中,前往 Media CDN 页面。

    前往媒体 CDN

  2. 如需打开要为其配置路由规则的服务的详情页面,请点击相应服务名称。

  3. 如需切换到修改模式,请点击修改按钮。

  4. 如需前往路由部分,请点击下一步

  5. 请至少指定一条主机规则。点击添加主机规则。然后,执行以下操作:

    1. 对于主机,请至少指定一个用于匹配的主机

    2. 对于说明,请提供主机规则的简要说明。

    或者,如需修改主机规则,请点击箭头将其展开。

  6. 请至少指定一条路由规则。点击添加路由规则

    或者,如需修改路线规则,请点击相应行中的修改

  7. 修改路由规则窗格中,为优先级设置路由优先级值。

  8. 说明中,提供简短的说明,以便在规则列表中识别该规则。

  9. 匹配部分中,指定至少一个匹配条件。点击添加匹配条件。之后,执行以下操作:

    1. 对于匹配类型,选择任意路径匹配选项。
    2. 路径匹配字段中,指定名称、路径或模板。请考虑使用通配符模式匹配

      如果需要,还可以选择对路径值区分大小写

    3. 可选:选择标头匹配查询参数匹配。然后,点击相关按钮以添加标头和查询参数。对于每个标头和查询参数,请指定名称、匹配类型和值。

      如需了解详情,请参阅根据标头和查询参数进行匹配

    4. 如需保存匹配条件,请点击完成

  10. 对于主要操作,选择以下选项之一:

    • 从来源提取:如需将请求定向到特定来源,请选择此选项,然后选择一个来源。

    • 网址重定向:如需重定向请求,请选择此选项。然后,指定重定向类型、路径和状态代码。

      您可以选择将所有响应重定向到 HTTPS 或剥离查询。

  11. 点击高级配置

    1. 标头操作部分中,点击添加内容

      选择一种操作类型,然后将标头指定为名称-值对。接着,点击完成

    2. 路由操作部分中,点击添加内容

      指定操作类型及其相关选项。接着,点击完成

  12. 对于 HTTP 方法过滤,请选择自定义 HTTP 方法过滤

    然后,选择要代理到源的 HTTP 方法

  13. 如需保存路由规则,请点击保存

  14. 如需保存对服务的更改,请点击更新服务

gcloud 和 YAML

  1. 将 Media CDN 配置导出到 YAML 文件中。使用 gcloud edge-cache services export 命令

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    替换以下内容:

    • SERVICE_NAME:服务的名称
    • FILENAME:YAML 文件的名称
  2. 按照本页各部分中的说明,使用所需的配置更新 YAML 文件。

  3. 如需更新服务,请从 YAML 文件导入 Media CDN 配置。使用 gcloud edge-cache services import 命令

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

匹配请求

媒体 CDN 配置包含在 Routing 部分中为 EdgeCacheService 资源定义的一组路由。这些路由至少会根据主机来匹配请求。如需详细了解如何将流量定向到源站,请参阅 HostRulePathMatcher。每个路由都可以定义自己的 CDN 配置、重写、重定向、CORS 政策、自定义 HTTP 标头和源站映射。路由可以共用源站。

例如,您可以将清单请求路由到特定源站,并定义短效缓存 TTL负缓存政策。可以使用标头和查询参数将细分请求拆分到其他来源,以分离出特定的清单类型或用户。

以下示例展示了如何为主机 media.example.com 路由与特定标头、查询参数和路径前缀匹配的请求:

name: prod-service
routing:
  hostRules:
  - hosts:
    - media.example.com
    pathMatcher: example_routes
  pathMatchers:
  - name: example_routes
    routeRules:
    - priority: 10
      origin: staging-live-origin
      matchRules:
      - prefixMatch: /vod/
        headerMatches:
        - headerName: "x-staging-client"
          presentMatch: true
        queryParameterMatches:
        - name: "live"
          exactMatch: "yes"
      routeAction:
        cdnPolicy:
          defaultTtl: 5s

路径匹配

媒体 CDN 支持完整(完全)、前缀和通配符路径匹配。路径匹配可以与基于主机、标头和查询参数的匹配相结合,以构建精细的请求路由规则。

以下是三种匹配网址路径的方法。

字段 说明 示例
matchRules[].fullPathMatch fullPathMatch 条件与完整网址路径匹配,但不包括查询字符串。您必须指定尾部斜杠(如果相关)。

匹配规则为 fullPathMatch: "/stream/" 的路由匹配 /stream/,但不匹配 /stream/stream/us/hls/1234.ts

fullPathMatch 表示显式(完全)匹配。

matchRules[].prefixMatch prefixMatch 条件匹配网址路径前缀;以相同字符串开头的网址会匹配。

如果路由的匹配规则为 prefixMatch: "/videos/",则该路由会同时匹配 /videos/hls/58481314/manifest.m3u8/videos/dash,因为它们都包含 /videos/ 前缀。

matchRules[].pathTemplateMatch pathTemplateMatch 条件支持通配符运算符,可用于匹配复杂的网址格式和路径段,以及捕获用于重写网址的命名变量。

匹配规则为 pathTemplateMatch: "/**.m3u8" 的路由会匹配以 .m3u8 结尾的任何网址路径。

/content/en-GB/13/51491/manifest_193193.m3u8/p/abc/1234/manifest_1080p5000.m3u8 都符合此模式。

如需查看更多示例,请参阅模式匹配部分。

如需了解详情,请参阅 MatchRule 的 API 规范。

例如,如需匹配以 /stream/ 开头的所有请求,请创建类似于以下内容的路由规则:

name: prod-service
routing:
  hostRules:
  - hosts:
    - media.example.com
    - *.vod.example.com
    pathMatcher: example_routes
  pathMatchers:
  - name