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

前提条件

接入Nginx

API管理流程

Nginx防护中的API管理流程如下:

  1. 注入流量:用户流量进入到系统中。
  2. 流量分类:系统对流量进行分类,分为匹配API规则的流量和不匹配API规则的流量。
  3. 流量归类到对应的API名称:
    • 符合自定义API规则的流量将归类为对应的API名称。
    • 不符合自定义API规则的流量,系统将自动按照域名与端口或URL路径的方式,将流量收敛并生成相应的API名称。
    说明 API总数不超过2000个。
  4. 配置流控规则:对不同的API设置流控规则。
API管理原理图.png

自定义API

  1. 登录AHAS控制台,然后在页面左上角选择地域
  2. 在控制台左侧导航栏选择流量防护 > Nginx防护,然后在Nginx防护页面,单击Nginx资源卡片。
  3. 在Nginx防护详情控制台的左侧导航栏,选择API管理
  4. API管理页面,单击新增API
  5. 新增自定义API对话框,设置相关参数,然后单击新增
    参数 描述
    API名称 只能包含字母、数字以及特殊字符下划线(_)、短划线(-)、半角句号(.)、半角冒号(:),不超过1024个字符。
    域名和端口 匹配模式
    • 无限制:对请求路径没有限制条件,系统对请求路径不做任何检查,直接通过。
    • 精确匹配:域名要与匹配串完全一致。例如设置精确匹配的匹配串为console.aliyun.com,则这条API规则只对该域名下的请求有效。
    • 后缀匹配:只适用于域名和端口的匹配规则。例如设置后缀匹配的匹配串为aliyun.com,则这条API规则对所有aliyun.com二级域名下的请求都有效,例如console.aliyun.com、img.aliyun.com、oss.aliyun.com等。
    • 正则表达式:指标准正则表达式,表示该API规则对符合该正则表达式的请求有效。

      例如以下正则表达式:

      • ^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/、/api/test1、/api/test2。
    • 正则表达式:指标准正则表达式,表示该API规则对符合该正则表达式的请求有效。

      例如以下正则表达式:

      • .*(.jpg|.png):表示以所有.jpg和.png结尾的字符串。
      • Chapter[^1-5]:表示除去Chapter1~Chapter5。例如该规则对Chapter6有效,但是对Chapter3无效。
    匹配串 输入对应的匹配内容,表示该API规则对符合该匹配模式和匹配串的请求有效。
    匹配客户端URL路径 对于大部分网关服务器如Nginx都提供了rewrite功能:
    • 关闭此开关,将对比rewrite之后的客户端URL路径是否符合上述规则。默认是关闭。
    • 开启此开关,将会忽略网关服务器配置的rewrite规则,还是对比原始的客户端URL路径是否符合该条自定义API规则。
    说明

    自定义API规则优先级说明:

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

    API规则的优先级如下:

    1. 总体优先级:规则方式>匹配模式>匹配串长度。
    2. 规则方式:域名与端口>URL路径。
    3. 匹配模式:精确匹配>后缀匹配或前缀匹配>正则表达式>无限制。
    4. 匹配串长度:长的匹配串>短的匹配串。
    5. 如果是正则表达式,按照添加的时间,越后添加的权重越低。

设置未匹配规则的API命名方式

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

  1. 登录AHAS控制台,然后在页面左上角选择地域
  2. 在控制台左侧导航栏选择流量防护 > Nginx防护,然后在Nginx防护页面,单击Nginx资源卡片。
  3. 在Nginx防护详情控制台的左侧导航栏,选择API管理
  4. API管理页面,选择未匹配规则的API命名方式
    • default:域名和端口(推荐):用流量的域名和端口作为归类命名的方式。例如流量URL为http://demo.aliyun.com/api/login,则API名称为default:demo.aliyun.com。这种方式的收敛度较高,推荐您使用这种收敛方式。
    • URL路径:用流量的URL路径作为归类命名的方式。例如流量URL为http://demo.aliyun.com/api/login ,则API名称为/api/login。这种命名方式发散性较高,不建议选择。特别是在流量遭到恶意攻击的时候,极易出现接口详情里接口过多难以管理的情况。
  5. 在提示对话框中单击确认修改

后续步骤

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