You need to enable JavaScript to run this app.
导航
转发规则概述
最近更新时间:2025.03.06 20:40:37首次发布时间:2022.05.18 20:54:43
我的收藏
有用
有用
无用
无用

ALB 按照您设置的转发规则,对不同特征的访问流量进行分发。您可以为一个监听器配置多条转发规则。
基础版 ALB 实例支持基于域名和路径的转发规则。标准版 ALB 实例支持基于域名、路径和 HTTP 标头的转发规则,并支持复合转发条件。
基础版和标准版的转发规则匹配逻辑存在差异,详情请参见下文说明。

转发规则分类

转发规则分为默认转发规则和自定义转发规则。

  • 默认转发规则:当您创建监听器后,系统会自动生成一条默认转发规则。默认转发规则无法删除,但您可以修改默认转发规则关联的默认后端服务器组。
    • 基础版实例:默认转发规则中,域名的值为 -,表示任意域名。路径的值为 /,表示根目录。
    • 标准版实例:默认转发规则中,转发条件的值为 -,表示任意请求。
      如果请求不匹配任何自定义转发规则,ALB 会对请求应用默认转发规则。

    说明

    对于基础版 ALB 实例,默认转发规则在以下情形时无法被应用:

    • 请求匹配到了转发规则中的具体域名但是没有匹配到路径。
  • 自定义转发规则:除默认转发规则之外,您可根据业务需求自定义转发规则。在自定义转发规则中,您可以指定转发条件和转发动作。如果您使用的是标准版 ALB 实例,您还可以指定转发规则的优先级。

转发规则组成

一条转发规则由转发条件和转发动作组成。转发条件用于过滤请求,转发动作决定了请求如何被转发。
下表列出了基础版 ALB 实例和标准版 ALB 实例支持的转发条件和转发动作。

版本

转发条件

转发动作

基础版

基于域名和路径

转发至、重定向至

标准版

基于域名、路径和 HTTP 标头

转发至、重定向至、重写、限速

转发规则匹配(基础版)

域名和路径优先级

基础版 ALB 实例的转发规则间不存在优先级。ALB 接收到客户端请求时,会基于域名和路径的匹配结果来选择一条转发规则,并按照该转发规则转发客户端请求。在进行域名和路径匹配时,ALB 会考虑域名和路径的优先级。

域名优先级

如果客户端请求的域名与不同转发规则中的多个域名匹配,ALB 会按照域名优先级确定对应的转发规则。

域名类型

示例

优先级

精确域名

www.example.com

最高

以通配符(*)开头的泛域名

*.test.com

次高

以通配符(*)结尾的泛域名

test.com.*

最低

说明

泛域名匹配原则:泛域名只用于匹配与其同级别的域名。例如,*.example.com 可以匹配 www.example.com,但不能匹配 example.com。

路径优先级

如果客户端请求的路径与不同转发规则中的多条路径匹配,ALB 会按照路径优先级选择对应的转发规则。具体说明如下:
使用正则表达式定义的路径的优先级高于精确路径。

  • 如果请求的路径匹配到多个使用正则表达式定义的路径,那么 ALB 会按照对应转发规则的配置时间选择一条转发规则。最早配置的那条转发规则会被优先选择。
  • 如果请求的路径匹配到多条精确路径,那么 ALB 会按照最长前缀匹配原则选择一条转发规则。前缀最长的路径对应的那条转发规则会被优先选择。例如,请求的路径 /abcde 同时匹配 /abc 与 /abcd,但是 ALB 会选择 /abcd 对应的转发规则。

转发规则匹配流程

Image
ALB 接收到客户端请求时,会先按照域名优先级进行域名匹配:

  • 如果存在匹配的域名,则继续按照路径优先级进行路径匹配。
    • 如果存在匹配的路径,则按照域名和路径对应的转发规则转发请求。
    • 如果不存在匹配的路径,则无法转发该请求,会返回 4xx 状态码给客户端。
  • 如果不存在匹配的域名,则尝试匹配“无域名仅路径”的转发规则。
    • 如果存在“无域名仅路径”的转发规则,则继续按照路径优先级进行路径匹配。
      • 如果存在匹配的路径,则按照该路径对应的转发规则转发请求。
      • 如果不存在匹配的路径,则按照默认转发规则转发请求。
    • 如果不存在“无域名仅路径”的转发规则,则按照默认转发规则转发请求。

说明

  • “无域名仅路径”:指的是转发规则中配置了一条非/的路径,但是未配置域名。
  • 未配置域名时,将使用域名的默认值-。在上述流程图中,“转发规则配置的域名匹配请求的域名”条件句中的“域名”指的是具体域名如 www.example.com,域名是-的情形不包含在内。

转发规则匹配(标准版)

转发规则优先级

标准版 ALB 实例同一个监听器下的转发规则之间存在优先级:

  • 默认转发规则的优先级最低,且优先级不能调整。
  • 自定义转发规则的优先级可以调整。
  • 优先级的数值越小,优先级越高。在转发规则列表中,转发规则的位置越靠上,优先级越高。
  • 默认情况下,新创建的转发规则的优先级高于已有的转发规则。

转发规则匹配流程

在收到客户端请求时,ALB 会按照转发规则的优先级从高到低来依次进行匹配。当请求满足某一条转发规则中的转发条件时,ALB 停止匹配其他转发规则,并按照这条匹配的转发规则来转发请求。
同一条转发规则中的不同转发条件之间是”且“的关系。同一转发条件下的不同值之间是”或“的关系。只有当请求满足一条转发规则中的所有转发条件时,才被认为是匹配这条转发规则。

基于转发规则的流量分发

在 ALB 实例接收到客户端请求时,会根据转发规则,将流量分发给服务器组。
转发规则分为默认转发规则和自定义转发规则:

  • 默认转发规则只能关联一个后端服务器组。
  • 自定义转发规则可以关联多个后端服务器组。此外,您还可以配置服务器组的权重和组间会话保持。ALB 会按照您的配置将流量分发给服务器组。

服务器组的权重

ALB 能够根据每个服务器组的权重,按比例将客户端流量转发至对应的服务器组。
在自定义转发规则中添加多个服务器组时,您可以为每个服务器组设置权重。权重范围是 0~100。当您新添加一个服务器组时,该服务器组的默认权重为 100。当权重设为 0 时,表示 ALB 不会转发客户端流量至该服务器组上。

示例:
您在一条自定义转发规则中添加了 4 个服务器组,并为每个服务器组设置了不同的权重。则不同服务器组接收到的客户端流量的比例如下表所示。

服务器组

权重

服务器组接收到的客户端流量的比例

服务器组 A

40

40/(40+20+20+20 )× 100% = 40%

服务器组 B

20

20/(40+20+20+20 )× 100% = 20%

服务器组 C

20

20/(40+20+20+20 )× 100% = 20%

服务器组 D

20

20/(40+20+20+20 )× 100% = 20%

注意

当前 ALB 不提供服务器组维度的健康检查能力。例如,当服务器组 A 内未添加服务器或组内所有服务器的健康检查状态均为异常时,仍会有 40% 的流量被转发至服务器组 A。该情况下,ALB 会返回 502 或 503 状态码。

服务器组间的会话保持

当您在自定义转发规则中添加多个服务器组时,您可以开启”服务器组间会话保持”功能。开启此功能后,ALB 提供基于 Cookie 的会话保持功能,可以将来自同一个客户端的请求转发到同一后端服务器组。具体来说,在客户端请求第一次转发到某个服务器组后,ALB 在返回内容中植入该服务器组的 Cookie 信息。后续客户端请求将携带该 Cookie。ALB 识别到 Cookie 信息,将请求转发到之前的同一个服务器组上。
“服务器组间会话保持”功能的优先级高于服务器组权重。当客户端请求携带 Cookie 信息时,ALB 将请求转发到之前的同一个服务器组上,不再按服务器组的权重转发流量。

基于权重和会话保持的流量分发流程

当您在一个自定义转发规则中添加多服务器组时,您可以配置组间会话保持,使来自同一客户端的请求被转发至同一服务器组。此外,您还可以配置组内服务器的会话保持,使来自同一客户端的请求被转发至同一服务器。
以下流程图说明了 ALB 在接收到客户端请求后,如何按照权重和会话保持配置将请求转发到服务器组以及组内的服务器。

Image