# 转发策略
#### 操作场景
您可以通过给共享型负载均衡添加转发策略，将来自不同域名或者不同路径的请求转发到不同的后端服务器组处理。
例如：您可以通过添加转发策略，将视频、图片、音频、文本等请求分别转发到不同的后端服务器组上去处理，便于灵活分流业务，合理分配资源。
转发策略由**转发规则** 和**转发** **动作**两部分组成：
- 支持的转发规则有：**域名** 、**路径**。
- HTTP监听器支持的动作类型有：**转发至后端服务器组** 、**重定向至监听器**。
- HTTPS监听器支持的动作类型有：**转发至后端服务器组**。
 
#### 匹配原理
- 在添加了转发策略后，负载均衡器将按以下规则转发前端请求：
  - 如果能匹配到监听器的转发策略，则按该转发策略将请求转发到对应的后端服务器组。
  
  - 如果不能匹配到监听器的转发策略，则按照默认转发策略将请求转发到监听器默认的后端服务器组（创建监听器时配置的后端服务器组）。
  
  - 一条转发策略的转发规则中添加了域名和路径时，请求需同时满足域名和路径的条件，才能匹配到该条转发策略。
   
- 匹配优先级：
  - 当请求同时满足转发动作分别为域名和路径的两条转发策略时，优先按照域名进行匹配，如[表1]。
  
  - 不同域名间优先级互相独立。
  
  - 转发规则为路径时，匹配优先级如下：精确匹配 \> 前缀匹配 \> 正则匹配，匹配类型相同时路径长度越长，优先级越高。
   
 表1转发策略示例 
| 访问请求            | 转发策略 | 转发规则 | 设定值         |
|:---|:---|:---|:---|
| www.elb.com/test | 1     | 路径    | /test          |
| www.elb.com/test | 2    | 域名    | www.elb.com |
   
![](https://support.huaweicloud.com/usermanual-elb/public_sys-resources/note_3.0-zh-cn.png)
如[表1]中，访问请求www.elb.com/test同时满足转发策略1和转发策略2，优先按照域名进行匹配，则请求将按照转发策略2进行转发。
#### 约束与限制
- 此功能目前仅支持协议类型为HTTP、HTTPS的监听器。
- 负载均衡控制台不支持创建相同的转发策略。
- 一个监听器最多支持配置100条转发策略，超过配额的转发策略不生效。
- 配置共享型ELB的转发策略时，请注意以下事项：
  - 转发规则路径不支持查询字符串。如果您的路径设置为/path/resource?name=value，该条转发策略将失效。
  
  - 每个路径需要存于后端服务器（即必须是后端服务器上真实存在的路径），否则访问后端服务器时，后端服务器会返回404。
  
  - 因为正则匹配采用顺序匹配的方式，只要任意规则匹配成功就结束匹配。所以配置"路径匹配规则"为"正则匹配"的多个匹配规则时，规则之间不能重叠。
  
  - 不能配置路径完全相同的转发策略。
  
  - 输入的域名总长度不能超过100个字符。
   
![](https://support.huaweicloud.com/usermanual-elb/public_sys-resources/caution_3.0-zh-cn.png)
如果通过调用API接口创建了相同的转发策略，则会出现转发策略故障，此时即使把前面创建的转发策略删除，后面的转发策略依然会显示故障。将出现冲突的转发策略都删除后重新添加，即可恢复正常。
#### 添加转发策略
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在弹性负载均衡列表页面，单击需要添加转发策略的负载均衡器名称。
3. 在"监听器"页签，您可以通过以下两种操作入口，进入监听器的"转发策略"页签。
   - 在目标监听器所在行的"操作"列，单击"添加/编辑转发策略"。
   
   - 单击目标监听器的名称，并切换到"转发策略"页签。
    
4. 单击"添加转发策略"按钮。参考[表2]配置参数。
5. 配置完成，单击"保存"。
 表2添加转发策略的参数 
| 参数                                                                                    || 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 样例         |
|:---|---|:---|:---|
| 转发规则 | 域名           | 触发转发的域名，仅支持精确域名。 域名或者路径至少要指定一个。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | www.test.com |
| 转发规则 | 路径           | - 匹配说明 触发转发的路径，由英文字母、数字和特殊字符_\~';@\^-%#$.\*+?,=!:\|\\/()\[\]{}组成。   - 匹配方式 - 精确匹配：请求的路径和设定的路径完全一致，只能由/开头。  - 前缀匹配：请求的路径匹配已设定路径开头的，只能由/开头。  - 正则匹配：请求的路径和设定的路径正则表达式匹配。     | /login.php |
| 动作                             | 转发至后端服务器组 | 如果请求与配置的转发规则（条件）匹配，则将请求转发至配置的后端服务器组。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 转发至后端服务器组                              |
| 动作                             | 重定向至监听器      | 如果请求与配置的转发规则（条件）匹配，则将请求重定向至配置的监听器。 仅HTTP监听器支持配置该动作类型。 说明： 选择"重定向至监听器"并配置监听器后，除访问控制以外原有监听器配置会失效。 例如：配置了重定向至监听器后，当客户端通过HTTP请求访问的时候，后端服务器会返回HTTPS的响应，即强制以HTTPS请求访问网页。因此实际以HTTPS监听器的配置为准向后端服务器进行转发，原有HTTP监听器的配置就无效了。                                                                                                                                                                                                                                               | -                                     |
| 后端服务器组                                                                             || 为转发策略选择已有的后端服务器组。 "动作"选择"转发至后端服务器组"时需要设置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | -        |
| 监听器                                                                                    || 为转发策略选择已有的监听器。 "动作"选择"重定向至监听器"时需要设置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -         |
   
#### 路径匹配示例
如[表3]所示，是一个路径匹配示例，转发情况如[图1]所示。
 表3路径匹配示例 
| 模式     | 请求URL           | 设定路径                                                                                                                                                                            ||||
|:---|:---|:---|---|---|---|
| -       | -                | /elb/index.html | /elb | /elb\[\^\\s\]\* | /index.html |
| 精确匹配  | /elb/index.html | √                 | -   | -                | -           |
| 前缀匹配  | /elb/index.html | √                | √    | -               | -          |
| 正则匹配 | /elb/index.html | √                | -   | √                | -          |
   
图1转发示例   
![](https://support.huaweicloud.com/usermanual-elb/zh-cn_image_0000001819324202.jpg "点击放大")
以上图为例
请求的URL：/elb_gls/glossary.html先在精确匹配规则中查找，如果没有找到精确匹配的规则，则继续在前缀匹配规则中查找，找到匹配的规则2，将该请求转发到规则2对应的后端服务器组2。此时虽然请求URL和正则匹配规则中的规则3相匹配，但由于前缀匹配的优先级比较高，所以最终将请求转发至后端服务器组2。
#### 修改转发策略
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在弹性负载均衡列表页面，单击需要修改转发策略的负载均衡器名称。
3. 切换到监听器页签，单击需要修改转发策略的监听器名称。
4. 切换到"转发策略"页签，选择需要修改的转发策略，单击"编辑"。
5. 根据界面提示修改参数，单击"保存"。
 
#### 删除转发策略
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在弹性负载均衡列表页面，单击需要删除转发策略的负载均衡器名称。
3. 切换到监听器页签，单击需要删除转发策略的监听器名称。
4. 切换到"转发策略"页签，选择需要删除的转发策略，单击"删除"。
5. 在弹出的"删除转发策略"对话框中，单击"确定"。
 
