第 7 层策略
第 7 层 (L7) 策略用于通过将其 L7 信息与 L7 规则相匹配来对流量进行分类,然后在这些规则匹配时执行特定操作。
- 策略应用于前端应用程序端口(协议)。
- 多个策略可以应用于同一协议。
由于一个协议可以应用多种策略,因此每个策略都关联一个优先级。
- 将首先对优先级设置为最低的策略求值。
- 如果该策略的关联规则与流量不匹配,那么将对优先级列表中的下一个优先级最低的策略求值。
如果流量与任何策略规则都不匹配,那么会将流量重定向到缺省池,缺省池是部署基本 Load Balancer 时配置的池。
每项策略都关联着一个动作,当策略中的所有规则与流量匹配时,该动作就会执行。
操作可以是:
- 拒绝
- 重定向到 HTTPS
- 重定向到 URL
- 重定向到池
将首先评估设置为 reject
的策略。
如果该操作设置为 REDIRECT_HTTPS
,那么 HTTP 流量将重定向到 HTTPS 侦听器端口。 每个侦听器仅支持此操作的一个配置。 此操作无法配置 L7 规则,您必须使用 API 对其进行配置。 您可以通过将操作 REDIRECT_HTTPS
与 SoftLayer_Network_LBaaS_L7Policy
服务的 addL7Policies
方法配合使用来配置 L7
策略。 redirectUrl
数据类型为 HTTPS 重定向提供 HTTPS 侦听器的通用唯一标识 (UUID)。
Redirect to https
策略在 Reject
之后进行求值。 如果此策略存在,那么任何现有 Redirect to url
和 Redirect to pool
策略都不适用。 此外,如果存在任何现有 Redirect to https
策略,那么无法创建任何新的 Redirect to url
和 Redirect to pool
策略。
如果不存在 HTTPS 重定向策略,那么将在 Reject
之后对设置为 Redirect to url
的任何策略进行求值。
最后,发送至 Redirect to pool
的政策评估排在最后。
在每个行动类别中,政策按优先级从低到高进行评估。 每个侦听器只允许一个 REDIRECT_HTTPS
操作,并且它优先于除 REJECT
以外的所有其他策略。 因此,“优先”的概念并不适用。
第 7 层策略属性
属性 | 描述 |
---|---|
名称 | 策略的名称。 每个策略都必须具有唯一名称。 |
操作 | 规则匹配时要执行的操作。 这些操作是 REJECT ,REDIRECT_HTTPS ,REDIRECT_URL 和 REDIRECT_POOL 。REDIRECT_HTTPS 操作仅受 API 支持。 |
优先级 | 在每个行动类别中,政策按优先级从低到高进行评估。 此字段不适用于 REDIRECT_HTTPS ,因为每个侦听器只有一个此类操作适用。 |
重定向 URL | 如果操作设置为 REDIRECT_URL ,则流量将被重定向到 URL。 此外,要将流量重定向到的 HTTPS 侦听器 UUID (如果操作设置为 REDIRECT_HTTPS )。 |
重定向 L7 池 | 如果操作设置为 REDIRECT_POOL ,则流量将被发送到服务器池。 |
协议 | 应用策略的前端应用程序端口。 |
第 7 层规则
第 7 层规则定义入局流量中要与特定值匹配的部分。
- 对于具有
REDIRECT_HTTPS
操作的任何 L7 策略,不允许添加 L7 规则。 - 如果入局流量与规则的指定值匹配,那么规则求值为
true
。 - 第 7 层规则始终与第 7 层策略相关联。 多个第 7 层规则可以与同一个第 7 层策略相关联。
- 如果一个策略关联了多个规则,则每个规则都将被评估为
true
或false
。 - 如果与策略相关的所有规则都评估为
true
,则策略操作将应用于请求。 否则,Load Balancer 会对下一个策略求值。
规则有类型,用于指示与规则匹配的第七层流量的部分。
Type | 要抽取并求值的字段 |
---|---|
HOST_NAME |
URL 的主机名部分(例如,api.my_company.com ) |
FILE_TYPE |
URL 的结尾,表示文件类型(例如,jpg ) |
HEADER |
HTTP 头中的字段 |
COOKIE |
HTTP 头中指定的 cookie |
PATH |
URL 中主机名之后的部分(例如,/index.html ) |
规则也有一个比较类型,用于指示如何评估规则。
比较类型 | 求值类型 |
---|---|
REGEX |
将抽取的字段(例如,hostname )与提供的正则表达式相匹配 |
STARTS_WITH |
验证抽取的字段是否以提供的字符串开头 |
ENDS_WITH |
验证抽取的字段是否以提供的字符串结尾 |
CONTAINS |
验证抽取的字段是否包含提供的字符串 |
EQUAL_TO |
验证抽取的字段是否与提供的字符串完全相同 |
并非所有规则类型都支持所有比较类型。 例如,如果使用的是 FILE_TYPE
,那么最好使用比较类型 REGEX
和 ENDS_WITH
。
第 7 层规则属性
属性 | 描述 |
---|---|
Type | 指定规则的类型。 规则类型可以是 HOST_NAME ,FILE_TYPE ,HEADER ,COOKIE 或 PATH 。 |
比较类型 | 比较类型与规则类型、键和值结合使用,用于定义规则和流量分类。 比较类型可以是:REGEX 、STARTS_WITH 、ENDS_WITH 、CONTAINS 和 EQUAL_TO 。 |
键 | 规则类型 HEADER 和 COOKIE 的描述键。 |
值 | 对于规则类型 HEADER 和 COOKIE ,会将值与键进行比较。 |
反转 | 如果将值设置为1,则每当指定的规则不匹配时,此 L7 规则比较的值将设置为 true 。 |
第 7 层策略标识 | 规则连接到的策略的唯一标识。 |