请求分组管理

请求分组管理功能可以自定义分组名称和规则,将流量根据规则归类为不同的分组。此分组名称用于定义Nginx防护的流控对象,便于您设置流控规则。本文介绍请求分组的管理流程、自定义配置等内容。

前提条件

请求分组管理流程

Ingress/Nginx防护中的请求分组管理流程如下:

  1. 注入流量:用户流量进入到系统中。

  2. 流量分类:系统对流量进行分类,分为匹配分组规则的分组流量和不匹配分组规则的接口流量。

  3. 流量归类到对应的分组名称:

    • 符合自定义分组规则的流量将归类为对应的分组名称。

    • 不符合自定义分组规则的流量,系统将自动按照域名与端口或URL路径的方式,将流量收敛并生成相应的接口名称。

    说明

    分组和接口总数相加不能超过2,000。

  4. 配置流控规则:对不同的分组设置流控规则。

请求分组流量规则

自定义请求分组

  1. 登录AHAS控制台,然后在页面左上角选择地域。
  2. 在控制台左侧导航栏选择流量防护 > Ingress/Nginx防护,然后在Ingress/Nginx防护页面,单击目标资源卡片。

  3. 在左侧导航栏,单击请求分组管理

  4. 请求分组管理页面,单击新增请求分组

  5. 新增自定义请求分组对话框,设置相关参数,然后单击新增

    参数

    描述

    请求分组名称

    只能包含字母、数字以及特殊字符下划线(_)、短划线(-)、半角句号(.)、半角冒号(:),不超过1024个字符。

    域名和端口

    匹配模式

    • 无限制:对请求路径没有限制条件,系统对请求路径不做任何检查,直接通过。

    • 精确匹配:域名要与匹配串完全一致。例如设置精确匹配的匹配串为console.aliyun.com,则这条分组规则只对该域名下的请求有效。

    • 后缀匹配:只适用于域名和端口的匹配规则。例如设置后缀匹配的匹配串为aliyun.com,则这条分组规则对所有aliyun.com二级域名下的请求都有效,例如console.aliyun.com、img.aliyun.com、oss.aliyun.com等。

    • 正则表达式:指标准正则表达式,表示该分组规则对符合该正则表达式的请求有效。

      例如以下正则表达式:

      • ^www*:表示所有以www开头的字符串。

      • [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?:符合域名格式得到匹配,例如192.168.1.1 aliyun.com。

    匹配串

    输入对应的匹配内容。

    URL路径

    匹配模式

    • 无限制:对请求路径没有限制条件,系统对请求路径不做任何检查,直接通过。

    • 精确匹配:请求路径要和匹配串完全一致,例如/img/test.jpg,只有完全匹配这个路径的流量才会命中规则。

    • 前缀匹配:只适用于URL路径的匹配规则。例如设置前缀匹配的匹配串为/api/,则这条分组规则对以/api/为开头的请求有效。例如/api/、/api/test1、/api/test2。

    • 正则表达式:指标准正则表达式,表示该分组规则对符合该正则表达式的请求有效。

      例如以下正则表达式:

      • .*(.jpg|.png):表示以所有.jpg和.png结尾的字符串。

      • Chapter[^1-5]:表示除去Chapter1~Chapter5。例如该规则对Chapter6有效,但是对Chapter3无效。

    匹配串

    输入对应的匹配内容,表示该分组规则对符合该匹配模式和匹配串的请求有效。

    匹配客户端URL路径

    对于大部分网关服务器如Nginx都提供了rewrite功能:

    • 关闭此开关,将对比rewrite之后的客户端URL路径是否符合上述规则。默认是关闭。

    • 开启此开关,将会忽略网关服务器配置的rewrite规则,还是对比原始的客户端URL路径是否符合该条自定义分组规则。

    说明

    自定义请求分组规则优先级说明:

    如果一个请求流量符合多条分组规则,系统默认选择最先符合的那一条规则,后续不再继续匹配。请求分组管理页面的分组名称已按照规则的优先级从高到低顺序排列。

    分组规则的优先级如下:

    1. 总体优先级:规则方式>匹配模式>匹配串长度。

    2. 规则方式:域名与端口>URL路径。

    3. 匹配模式:精确匹配>后缀匹配或前缀匹配>正则表达式>无限制。

    4. 匹配串长度:长的匹配串>短的匹配串。

    5. 如果是正则表达式,按照添加的时间,越后添加的权重越低。

设置未匹配分组规则的请求接口命名方式

若有流量未匹配到自定义的任一分组规则,系统会自动对其接口进行命名,设置命名生成方式的操作步骤如下:

  1. 登录AHAS控制台,然后在页面左上角选择地域。
  2. 在控制台左侧导航栏选择流量防护 > Ingress/Nginx防护,然后在Ingress/Nginx防护页面,单击目标资源卡片。

  3. 在左侧导航栏,单击请求分组管理

  4. 请求分组管理页面,选择未匹配分组请求的接口名称生成方式

    • default:域名和端口(推荐):用流量的域名和端口作为接口命名的方式。例如流量URL为http://demo.aliyun.com/api/login,则接口名称为default:demo.aliyun.com。这种方式的收敛度较高,推荐您使用这种收敛方式。

    • URL路径:用流量的URL路径作为接口命名的方式。例如流量URL为http://demo.aliyun.com/api/login ,则接口名称为/api/login。这种命名方式发散性较高,不建议选择。特别是在流量遭到恶意攻击的时候,极易出现接口详情里接口过多难以管理的情况。

  5. 在提示对话框中单击确认修改

后续步骤

定义成功的分组名称会在接口详情页面展示,您可以对目标接口设置流控规则。具体操作,请参见配置流控规则