limit-count

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

    开启插件

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

    你可以使用浏览器打开 dashboard:http://127.0.0.1:9080/apisix/dashboard/,通过 web 界面来完成上面的操作,先增加一个 route:

    如果你需要一个集群级别的流量控制,我们可以借助 redis server 来完成。不同的 APISIX 节点之间将共享流量限速结果,实现集群流量限速。

    请看下面例子:

    1. curl -i http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    2. {
    3. "uri": "/index.html",
    4. "plugins": {
    5. "limit-count": {
    6. "count": 2,
    7. "time_window": 60,
    8. "rejected_code": 503,
    9. "key": "remote_addr",
    10. "redis_host": "127.0.0.1",
    11. "redis_port": 6379,
    12. "redis_password": "password",
    13. "redis_timeout": 1001
    14. }
    15. },
    16. "upstream": {
    17. "type": "roundrobin",
    18. "nodes": {
    19. "39.97.63.215:80": 1
    20. }
    21. }
    22. }'

    测试插件

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

    1. HTTP/1.1 200 OK
    2. Connection: keep-alive
    3. X-RateLimit-Limit: 2
    4. X-RateLimit-Remaining: 0
    5. Server: APISIX web server

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

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

    移除插件

    当你想去掉 limit count 插件的时候,很简单,在插件的配置中把对应的 json 配置删除即可,无须重启服务,即刻生效:

    1. curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    2. {
    3. "methods": ["GET"],
    4. "uri": "/index.html",
    5. "upstream": {
    6. "type": "roundrobin",
    7. "nodes": {
    8. "39.97.63.215:80": 1
    9. }
    10. }'