Kong入门学习实践(8)流量控制插件

发布时间 2023-07-02 17:26:26作者: EdisonZhou

Kong的一大特色就在于强大的可扩展性,具体实现方式就是插件。一来Kong已经提供了很多内置的插件,二来我们也可以使用Lua语言自定义开发插件。今天,我们就来了解一些常用的流量控制插件。

关于流量控制插件

我们在实际应用往往会有一些场景需要限流和限频,从而管理入站和出站的流量。

在Kong中就提供了一些内置的流量控制的插件:

  • 请求大小限制

  • 请求流量限制

  • 终止请求

请求大小限制

此插件主要用于阻止请求内容大小大于指定配置(比如512KB或2MB)的请求,以防止非法、恶意的DoS(拒绝服务)攻击。

我们可以根据下面的步骤开启请求大小限制插件:

首先,找到需要开启插件的service,并进入到plugins页面点击ADD PLUGIN按钮。

其次,找到Traffic Control类别,然后找到Request Size Limiting插件,点击ADD PLUGIN按钮。

然后,配置允许的内容大小,这里为了演示,配置为10个字节。

最后,我们通过PostMan来验证一下,将Body类型选择为“x-www-form-urlencoded”,然后输入一个超过10字节的内容即可测试。

请求流量限制

此插件主要用于限制客户端在一定时间内的请求量,广泛应用于需要保证系统性能的系统访问中。

在Kong中,Traffic Control插件类型中就提供了一个Rate Limiting的限流插件。

在配置项中,我们假设限制客户端每秒只能至多有3次请求。

最后,我们直接通过浏览器来验证一下,连续快速刷新就会得到这个提示:

终止请求

此插件主要通过返回指定的HTTP状态码和信息来终止传入的请求,常用在升级和维护站点时,暂时停止客户端的任务访问请求。

在Kong中,Traffic Control插件类型中就提供了一个Request Termination的终止请求插件。

配置内容如下:返回状态码403 及 一段消息“Sorry, this site is upgrading, please wait..

这里我们用PostMan来测试一下:

 

了解了这些常见的流量控制插件,我们很快就可以用在自己的实际场景中。

参考资料

闫观涛,《Kong入门与实践-基于Nginx和OpenRestry的云原生微服务网关》