更新时间:2024-08-29 GMT+08:00
分享

创建转发策略

功能介绍

创建转发策略。监听器和转发策略共同决定了流量如何转发到后端云服务器上。

  • 通过匹配action为REDIRECT_TO_POOL的转发策略下的转发规则的url和域名,可以将匹配的流量转发到指定的后端云服务器组上,再将流量分发到在这个后端云服务器组关联的后端云服务器上。
  • 可以通过创建action为REDIRECT_TO_LISTENER的转发策略,将HTTP监听器的流量都重定向到TERMINATED_HTTPS监听器上,实现请求协议的重定向。

接口约束

当前只支持HTTP协议跳转到HTTPS协议。即当转发策略的action为REDIRECT_TO_LISTENER时,转发策略的listener_id指定的监听器只支持HTTP类型的监听器,redirect_listener_id指定的监听器只支持TERMINATED_HTTPS类型的监听器。

转发策略的redirect_listener只能指定为转发策略所在负载均衡器下的监听器。

调试

您可以在API Explorer中直接运行调试该接口。

URI

POST /v2/{project_id}/elb/l7policies

表1 参数说明

参数

是否必选

参数类型

描述

project_id

String

操作用户的项目ID。

获取方法详见获取项目ID

请求消息

表2 请求参数

参数

是否必选

参数类型

描述

l7policy

L7policy object

转发策略对象。详见表3

表3 l7policy字段说明

参数

是否必选

参数类型

描述

tenant_id

String

转发策略所在的项目ID。

获取方法详见获取项目ID

需要和token中的project_id一致。

支持的最大字符长度:255

name

String

转发策略名称。

支持的最大字符长度:255

admin_state_up

Boolean

转发策略的管理状态。只支持设置为true。

description

String

转发策略的描述信息。

支持的最大字符长度:255

listener_id

String

转发策略所在的监听器ID。

  • 当action为REDIRECT_TO_POOL时,只支持创建在PROTOCOL为HTTP或TERMINATED_HTTPS的listener上;
  • 当action为REDIRECT_TO_LISTENER时,只支持创建在PROTOCOL为HTTP的listener上。

action

String

转发策略的转发动作。

取值范围:

  • REDIRECT_TO_POOL:将匹配的流量转发到redirect_pool_id指定的后端云服务器组上;
  • REDIRECT_TO_LISTENER:将listener_id指定的HTTP监听器的流量重定向到redirect_listener_id指定的TERMINATED_HTTPS监听器上。

redirect_pool_id

String

流量匹配后转发到后端云服务器组的ID。默认值:null;

当action为REDIRECT_TO_POOL时为必选字段。

当action为REDIRECT_TO_LISTENER时,不可指定该字段。

指定的后端云服务器组需满足以下条件:

  • 不能是监听器的default_pool;
  • 不能是除该转发策略所在的监听器以外的其他监听器的转发策略使用的后端云服务器组。

redirect_listener_id

String

流量匹配后转发到的监听器的ID。默认值:null;

当action为REDIRECT_TO_LISTENER时为必选字段。

当action为REDIRECT_TO_POOL时不可指定。

  • 只支持指定为protocol为TERMINATED_HTTPS的listener。
  • 只支持指定为当前转发策略所在的负载均衡器下的监听器。

redirect_url

String

转发策略重定向到的url。默认值:null;

该字段为预留字段,暂未启用。

支持的最大字符长度:255

position

Integer

转发优先级,从1递增,最高100。默认值:100;

该字段为预留字段,暂未启用。

rules

Array of Rules objects

转发策略关联的转发规则对象。详细参考表4

rules列表中最多含有2个rule对象,且每个rule的type字段不可相同。

表4 rules字段说明

属性

类型

必选

说明

admin_state_up

Boolean

转发规则的管理状态。只支持设置为true。

type

String

转发规则的匹配类型。

取值范围:

  • HOST_NAME:匹配请求中的域名;
  • PATH:匹配请求中的路径;

同一个转发策略下转发规则的type不能重复。

compare_type

String

转发匹配方式:

type为HOST_NAME时,取值范围:

  • EQUAL_TO:精确匹配;

type为PATH时,取值范围:

  • REGEX:正则匹配;
  • STARTS_WITH:前缀匹配;
  • EQUAL_TO:精确匹配。

invert

Boolean

是否反向匹配;

取值范围:true/false。默认值:false;

该字段为预留字段,暂未启用。

key

String

匹配内容的键值。默认为null。

该字段为预留字段,暂未启用。

value

String

匹配内容的值。不能包含空格。

  • 当type为HOST_NAME时,取值范围:String (100),字符串只能包含英文字母、数字、“-”或“.”,且必须以字母或数字开头。
  • 当type为PATH时,取值范围:String (128)。当转发规则的compare_type为STARTS_WITH、EQUAL_TO时,字符串只能包含英文字母、数字、_~';@^-%#&$.*+?,=!:| \/()[]{},且必须以"/"开头。

响应消息

表5 响应参数

参数

参数类型

描述

l7policy

L7policy object

转发策略对象。详见表6

表6 l7policy字段说明

参数

参数类型

描述

id

String

转发策略ID。

tenant_id

String

转发策略所在的项目ID。

project_id

String

此参数和tenant_id参数含义一样,均指转发策略所在的项目ID。

name

String

转发策略名称。

admin_state_up

Boolean

转发策略的管理状态。只支持设置为true。

description

String

转发策略的描述信息。

listener_id

String

转发策略所在的监听器ID。

action

String

转发策略的匹配动作。

取值范围:

  • REDIRECT_TO_POOL:将匹配的流量转发到redirect_pool_id指定的后端云服务器组上;
  • REDIRECT_TO_LISTENER:将listener_id指定的HTTP监听器的流量重定向到redirect_listener_id指定的TERMINATED_HTTPS监听器上。

redirect_pool_id

String

流量匹配后转发到后端云服务器组的ID。

redirect_listener_id

String

流量匹配后转发到的监听器的ID。

redirect_url

String

转发策略重定向到的url。

该字段为预留字段,暂未启用。

rules

Array of Rules objects

转发策略关联的转发规则的ID列表。详见表7

position

Integer

转发优先级,从1递增,最高100。默认值:100;

该字段为预留字段,暂未启用。

provisioning_status

String

该字段为预留字段,暂未启用。

转发策略的配置状态,可以为ACTIVE。

表7 rules字段说明

参数

参数类型

描述

id

String

关联的转发规则id

请求示例

  • 请求样例1 创建转发策略,转发到后端云服务器组
    POST https://{Endpoint}/v2/573d73c9f90e48d0bddfa0eb202b25c2/elb/l7policies
    
    {
        "l7policy": {
            "name": "niubiao_yaqing_api-2", 
            "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", 
            "action": "REDIRECT_TO_POOL", 
            "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", 
            "rules": [
                {
                    "type": "PATH", 
                    "compare_type": "EQUAL_TO", 
                    "value": "/test"
                }, 
                {
                    "type": "HOST_NAME", 
                    "compare_type": "EQUAL_TO", 
                    "value": "www.test.com"
                }
            ]
        }
    }
  • 请求样例2 创建重定向
    POST https://{Endpoint}/v2/573d73c9f90e48d0bddfa0eb202b25c2/elb/l7policies
    
    {
        "l7policy": {
            "action": "REDIRECT_TO_LISTENER", 
            "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", 
            "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", 
            "name": "redirect-test"
        }
    }

响应示例

  • 响应样例1
    {
        "l7policy": {
            "redirect_pool_id": "6460f13a-76de-43c7-b776-4fefc06a676e", 
            "description": "", 
            "admin_state_up": true, 
            "rules": [
                {
                    "id": "742600d9-2a14-4808-af69-336883dbb590"
                }, 
                {
                    "id": "3251ed77-0d52-412b-9310-733636bb3fbf"
                }
            ], 
            "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
            "listener_id": "3e24a3ca-11e5-4aa3-abd4-61ba0a8a18f1", 
            "redirect_url": null, 
            "redirect_listener_id": null, 
            "action": "REDIRECT_TO_POOL", 
            "position": 100, 
            "provisioning_status": "ACTIVE", 
            "project_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
            "id": "65d6e115-f179-4bcd-9bbb-1484e5f8ee81", 
            "name": "niubiao_yaqing-_api-2"
        }
    }
  • 响应样例2
    {
        "l7policy": {
            "redirect_pool_id": null, 
            "description": "", 
            "admin_state_up": true, 
            "rules": [ ], 
            "tenant_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
            "listener_id": "4ef8553e-9ef7-4859-a42d-919feaf89d60", 
            "redirect_url": null, 
            "redirect_listener_id": "3ee10199-a7b4-4784-93cd-857afe9d0890", 
            "action": "REDIRECT_TO_LISTENER", 
            "position": 100, 
            "provisioning_status": "ACTIVE", 
            "project_id": "573d73c9f90e48d0bddfa0eb202b25c2", 
            "id": "bc4e4338-480f-4a98-8245-5bb1964f0e1d", 
            "name": "redirect-test"
        }
    }

返回码

请参见状态码

相关文档