limit-count

    简介

    key 是可以被用户自定义的,只需要修改插件的一行代码即可完成。并没有在插件中放开是处于安全的考虑。

    如何使用

    下面是一个示例,在指定的 route 上开启了 limit count 插件:

    你也可以通过 web 界面来完成上面的操作,先增加一个 route,然后在插件页面中添加 limit-count 插件:

    如果启用单 redis 策略,请看下面例子:

    1. curl -i http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{ "uri": "/index.html", "plugins": { "limit-count": { "count": 2, "time_window": 60, "rejected_code": 503, "key": "remote_addr", "policy": "redis", "redis_host": "127.0.0.1", "redis_port": 6379, "redis_password": "password", "redis_database": 1, "redis_timeout": 1001 } }, "upstream": { "type": "roundrobin", "nodes": { "39.97.63.215:80": 1 } }}'

    如果使用 策略:

    上述配置限制了 60 秒内只能访问 2 次,前两次访问都会正常访问:

    1. curl -i http://127.0.0.1:9080/index.html

    当你第三次访问的时候,就会收到包含 503 返回码的响应头:

    1. HTTP/1.1 503 Service Temporarily UnavailableContent-Type: text/htmlContent-Length: 194Connection: keep-aliveServer: APISIX web server

    同时,如果你设置了属性 rejected_msg 的值为 "Requests are too frequent, please try again later." ,当你第三次访问的时候,就会收到如下的响应体:

    这就表示 limit count 插件生效了。

    移除插件

    现在就已经移除了 limit count 插件了。其他插件的开启和移除也是同样的方法。