如果您需要自定义ALB监听转发规则,并希望按照指定规则将客户端请求转发至一个或多个服务器组中的后端服务器,及后端响应结果按照指定规则转发给客户端,可参考本文配置监听转发规则。
转发规则概述
您可以为ALB实例的一个监听添加多条转发规则。对于一条转发规则,从转发数据链路方向分为请求方向转发规则和响应方向转发规则,基础版实例仅支持请求方向转发规则,标准版和WAF增强版实例支持请求方向和响应方向转发规则。同时,一条转发规则由两部分组成:转发条件(condition)和转发动作(action)。转发条件实现对数据包的匹配,转发动作按照匹配结果执行对应的数据转发形式。您可以在一条转发规则中定义一个或多个转发条件以及一个或多个转发动作。
对于标准版和WAF增强版的ALB实例,客户端发起请求至ALB,ALB将请求数据通过请求方向转发规则处理后发送至对应的后端服务器,后端服务器的响应数据再经过ALB的响应方向转发规则处理后,返回给客户端。
请求方向转发规则中只能设置请求方向条件和动作。
响应方向转发规则中可以设置响应方向的条件和动作,同时也可以设置请求方向的条件。
一个转发规则必须包含一条转发至、重定向至或返回固定响应类型的转发动作,以保证客户端的请求不会中断转发动作。
说明基础版ALB实例仅支持请求方向转发规则,标准版和WAF增强版ALB实例支持请求方向和响应方向转发规则。
表 1. 基础版实例支持的转发规则
分类
转发条件
转发动作
请求方向
域名、路径、HTTP标头
转发至、重定向至
表 2. 标准版和WAF增强版实例支持的转发规则
分类
转发条件
转发动作
请求方向
域名、路径、HTTP标头、查询字符串、HTTP请求方法、Cookie和SourceIp。
转发至、重定向至、返回固定响应、重写、写入Header、删除Header、限速、流量镜像至和跨域。
响应方向
请求方向条件(选填):域名、路径、HTTP标头、查询字符串、HTTP请求方法、Cookie和SourceIp。
响应方向条件:响应中的状态码和响应中的标头。
返回固定响应、写入Header和删除Header
匹配原理
匹配策略:每个客户端请求会按照转发规则的优先级顺序(转发规则编号的数值越小,优先级越高)逐条匹配,一旦能够匹配到一条转发规则,立即按照当前转发规则转发流量。
如果在请求方向未匹配到其他转发规则,客户端请求将会按照默认转发规则转发。
如果在响应方向未匹配到转发规则,ALB会直接将响应返回给客户端。
路径如果配置为/*
,表示匹配所有路径的请求。如果您需要一条兜底的转发规则用于处理非预期的请求,转发条件中路径可以配置为/*
,转发动作配置为返回固定响应,状态码设置为404或403,配置完成后将该转发规则拖拽至倒数第二位置即可。
转发规则优先级:转发规则按照优先级从高到低排序,转发规则编号的数值越小优先级越高。
默认转发规则:创建监听后,系统会在请求方向自动创建一条默认转发规则,该转发规则转发条件为-
,表示匹配所有客户端请求;转发动作为转发至监听配置的服务器组。
默认转发规则不支持删除,支持更改转发动作的服务器组。默认转发规则的优先级最低且不支持调整优先级。
使用限制
前提条件
添加转发规则
您已在创建监听时定义了默认转发规则。此外,您可以在创建监听后添加转发规则。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏处,选择目标ALB实例所属的地域。
在实例页面,单击目标实例ID。
单击监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在转发规则页签,选择请求方向转发规则或响应方向转发规则,然后单击插入新规则。
在插入转发规则区域,配置下表参数,然后单击确定。
说明同一个转发条件的不同转发动作之间为“或”的关系。即如果一个转发条件配置了多个转发动作,则请求流量匹配任何一个转发动作都可以实现转发。
不同转发条件之间为“与”的关系。即如果配置了多个转发条件,则请求流量必须同时满足所有的转发条件才能实现转发。
请求方向转发规则
参数
描述
规则名称
输入自定义规则名称,若不输入系统会自动生成。
一个转发规则只能有一个规则名称。
转发条件
选择条件类型添加以下条件,您也可以单击+添加转发条件添加多个转发条件:
域名:添加一个或多个域名。域名匹配规则长度限制为3~128个字符,支持星号(*)和半角问号(?)作为通配符使用(其中*可以代表任何字符串,?仅代表单个字符串),包括精准域名、通配符域名、正则表达式域名。关于域名配置规则的更多信息,请参见转发条件的域名配置规则。
示例:
*.example.com
。路径:添加一条或多条路径。包括正则表达式类型的路径和非正则表达式类型的路径。关于路径配置规则的更多信息,请参见转发条件的路径配置规则。
示例:URL为
www.example.com/test/test1?x=1&y=2
时可配置为/test/*
。HTTP标头:在键是字段输入HTTP标头的名称,值是字段输入HTTP标头的内容,可添加多条标头内容。HTTP标头的键值长度限制为1~40个字符,只允许包含大小写英文字母、数字、下划线(_)和中划线(-)。HTTP标头的值长度限制为1~128个字符,支持可打印字符,开头和结尾不能为空格。
示例:键
user-agent
,值*Mozilla/4.0*
。查询字符串:添加一个或多个查询字符串的键和值对。键的长度为1~100个字符,值的长度为1~128个字符,支持小写字母、通配符星号(*)和半角问号(?)等可见字符,不支持空格和
#[]{}\|<>&
等特殊字符。示例:URL为
www.example.com/test/test1?x=1&y=2
时可配置为x:1
或y:2
。HTTP请求方法:添加一个或多个HTTP请求方法。包括:HEAD、GET、POST、OPTIONS、PUT、PATCH、DELETE。
Cookie:添加一个或多个Cookie。键的长度为1~100个字符,值长度为1~128个字符,支持小写字母、通配符星号(*)和半角问号(?)等可见字符,不支持空格和[]{}<>\#|&等特殊字符。
示例:键
key
,值value
。SourceIp:添加一个或多个IP地址或者IP地址段,不支持0.0.0.0/x类型的地址段,x为任意数字。
示例:
192.168.1.1/32
转发动作
选择动作类型添加以下动作,您也可以单击+添加动作添加多个转发动作。
转发至:在服务器组列表中选择目标服务器组。目前支持的服务器组类型包括服务器类型、IP类型和函数计算类型,您可以添加多个服务器组并开启服务器组间会话保持(该功能需确保所有添加的服务器组开启了会话保持功能)。
重定向至:在协议和状态码列表选择一个协议和一个状态码,以及分别输入跳转的目的域名、端口、路径和查询字符串。该转发动作中协议、域名、端口、路径、查询值不能全部为默认值或为空。
说明重定向至中关于路径的增强配置规则,请参见重写和重定向中路径的增强配置规则。
${x}表示引用请求中的响应值,如果保持默认,表示使用请求中的默认值。
关于状态码的更多信息,请参见HTTP协议常用标准状态码说明。
返回固定响应:输入响应状态码,然后选择填写响应正文类型和响应正文。响应状态码必须是2xx、4xx、5xx的数字型字符串,x为任意数字。
重写:分别输入跳转的目标域名、路径和查询字符串。重写中关于路径配置规则的更多信息,请参见重写和重定向中路径的增强配置规则。
写入Header:输入头字段名称和头字段内容,将覆盖请求中已有的头变量。其中标头键值长度为1~40字符,支持大小写英文字母、数字、下划线(_)和中划线(-),标头的值长度限制为1~128个字符,支持可打印字符、大小写英文字母,开头和结尾不能为空格。
删除Header:输入头字段名称,将删除请求Header中的该键值对内容。
说明请求方向写入Header和删除Header不允许将头字段名称设置为以下字段(不区分大小写):
slb-id
、slb-ip
、x-forwarded-for
、x-forwarded-proto
、x-forwarded-eip
、x-forwarded-port
、x-forwarded-client-srcport
、connection
、upgrade
、content-length
、transfer-encoding
、keep-alive
、te
、host
、cookie
、remoteip
、authority
。限速:请根据需要配置以下参数。
QPS(总限速):输入每秒请求数,取值范围:1~1000000。
QPS(基于客户端源IP限速):输入基于客户端源IP限速,取值范围:1~1000000。同时配置QPS(总限速)和QPS(基于客户端源IP限速)时,基于客户端源IP限速值要小于总限速值。
说明转发动作是限速时,必须要与转发至目标服务器组的转发动作配合使用才能生效。
限速+转发至:限速值以内的请求被转发至目标服务器组,如果每秒请求数(QPS)超出限速值,将返回503状态码给客户端。
限速+重定向至+转发至:在限速值以内的请求将被转发至目标服务器组。如果每秒请求数(QPS)超出限速值,则请求将被重定向至新的地址。
限速+返回固定响应+转发至:在限速值以内的请求将被转发至目标服务器组。如果每秒请求数(QPS)超出限速值,将返回预先设定的固定响应内容给客户端。
当X-Forwarded-For请求标头中包含多个IP地址时,例如
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
,最左边的地址是真实客户端IP,如果您需要使用ALB转发规则中基于SourceIp匹配和QPS(基于客户端源IP限速)功能,您需要在监听打开查找真实客户端源IP开关,以便ALB从X-Forwarded-For头字段中查找真实客户端源IP。更多信息,请参见添加HTTP监听和添加HTTPS监听。
流量镜像至:在服务器组列表中选择目标服务器组。支持选择服务器类型和IP类型的后端服务器组。
流量镜像至IP类型的后端服务器组时,请注意:
只支持挂载私网服务器,不支持挂载公网服务器。
不支持挂载同一个VPC内的ALB、NLB或CLB实例。
不支持转发路径存在环路的场景,ALB会在每个请求中添加ALICLOUD-ALB-TRACE的HTTP Header来探测环路。如果发现环路时,ALB会停止向后端转发请求并回复463的状态码,以避免网络风暴导致的资源耗尽。
支持企业版转发路由器和高速通道实现跨域转发,不支持基础版转发路由器。
一张云企业网中,一个地域只能有一个VPC内的一个或多个ALB实现跨地域挂载服务器。
无法实现同一个地域多个VPC内的ALB使用同一个转发路由器访问后端服务。
无法实现同一个地域多个VPC内的ALB使用多个转发路由器访问同一个后端服务。
ALB与后端服务器的流量仅支持通过系统路由表转发,暂不支持通过VPC自定义路由表转发。
跨域:客户端发送的请求URL的协议、域名或者端口三者之间任意一个与当前返回的页面URL不同即为跨域。请求包括简单请求和预检请求。
允许的访问来源:设置允许通过浏览器访问服务资源的站点。
允许的方法:选择跨域访问时允许的HTTP方法。包括:GET,POST、PUT、DELETE、HEAD、OPTIONS、PATCH。
允许的请求头部:除了浏览器内置的基础Header,设置跨域访问时允许的Header。
允许的响应头部:允许浏览器、JavaScript脚本访问的响应头部。
允许的携带凭证:跨域访问时是否允许携带的凭证信息。取值:允许或不允许,默认允许。
浏览器缓存时间:对于预检请求,设置OPTIONS预检请求在浏览器的最大缓存时间。单位:秒。取值范围:-1~172800。
响应方向转发规则
参数
描述
规则名称
输入自定义规则名称,若不输入则系统自动生成。
一个转发规则只能有一个规则名称。
如果满足以下请求方向条件(选填)
选择请求方向的转发条件,您也可以单击+添加请求方向转发条件添加多个请求方向的转发条件。具体操作,请参见添加转发规则步骤中请求方向转发规则的转发条件配置。
且满足以下响应方向条件
选择响应方向的转发条件,您也可以单击+添加响应方向转发条件添加多个响应方向转发条件:
响应中的状态码:返回给客户端响应中的状态码,取值100~599。
支持输入范围,多个状态码用半角逗号(,)分隔,例如:200-233,301。
响应中的标头:响应中的HTTP标头。在键是字段输入HTTP标头的名称,值是字段输入HTTP标头的内容,可添加多条标头内容。
转发动作
选择响应方向的动作类型,您也可以单击+添加动作添加多个响应方向的转发动作:
返回固定响应:输入响应状态码,然后选择填写响应正文类型和响应正文。响应状态码必须是2xx、4xx、5xx的数字型字符串,x为任意数字。
写入Header:输入响应方向头字段名称和头字段内容,将覆盖响应报文中已有的头变量。
删除Header:输入响应方向头字段名称,将删除响应报文中对应的键值对内容。
说明响应方向写入Header和删除Header不允许将头字段名称设置为以下字段(不区分大小写):
connection
、upgrade
、content-length
、transfer-encoding
。
添加AScript可编程脚本
您可以单击+在规则执行后添加可编程脚本添加AScript可编程脚本转发规则。具体操作,请参见步骤二:添加AScript可编程脚本定义的转发规则。
说明AScript可编程脚本转发规则功能必须满足以下条件才能使用:
创建的ALB实例版本为标准版及以上版本。
编辑转发规则
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏处,选择目标ALB实例所属的地域。
在实例页面,单击目标实例ID。
单击监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在转发规则页签,选择请求方向转发规则或响应方向转发规则,然后选中您要编辑的规则,单击右上角编辑。
修改完成后,单击保存。
重新排序规则
转发规则按照优先级从高到低开始匹配,数值越小优先级越高。您可以随时更改非默认规则的优先级。您不能更改默认规则的优先级。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏处,选择目标ALB实例所属的地域。
在实例页面,单击目标实例ID。
单击监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在转发规则页签,选择请求方向转发规则或响应方向转发规则,将目标转发规则移动至目标位置,然后单击保存优先级。
删除转发规则
您可以随时删除监听的非默认转发规则,默认转发规则不支持删除。当您删除监听时,也会删除它的所有转发规则。
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏处,选择目标ALB实例所属的地域。
在实例页面,单击目标实例ID。
单击监听页签,找到目标监听,然后在操作列单击查看/编辑转发规则。
在转发规则页签,选择请求方向转发规则或响应方向转发规则,然后选中您要删除的转发规则,单击删除。
在弹出的对话框中,单击确定删除。
相关文档
如果您想详细了解转发条件中域名和路径的配置规则,及转发动作中重写和重定向的路径增强配置规则,请参见配置域名和路径的转发规则。
如果您需要使用ALB将HTTP访问重定向至HTTPS,请参见使用ALB将HTTP访问重定向至HTTPS。
如果您需要使用ALB流量镜像功能实现仿真压测,请参见使用ALB流量镜像功能实现仿真压测。
如果您需要使用ALB实现灰度发布,请参见使用ALB实现灰度发布。
CreateRule:创建转发规则。
CreateRules:批量创建转发规则。
DeleteRule: 删除转发规则。
DeleteRules:批量删除转发规则。
ListRules:查询转发规则。
UpdateRuleAttribute:更新转发规则属性。
UpdateRulesAttribute:批量更新转发规则属性。