limit-count

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

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

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

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

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

    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. "rejected_code": 503,
    8. "policy": "redis",
    9. "redis_host": "127.0.0.1",
    10. "redis_port": 6379,
    11. "redis_password": "password",
    12. "redis_database": 1,
    13. "redis_timeout": 1001
    14. }
    15. },
    16. "upstream": {
    17. "type": "roundrobin",
    18. "nodes": {
    19. "39.97.63.215:80": 1
    20. }
    21. }

    如果使用 redis-cluster 策略:

    响应头里面包含了 X-RateLimit-LimitX-RateLimit-Remaining,他们的含义分别是限制的总请求数和剩余还可以发送的请求数:

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

    1. HTTP/1.1 503 Service Temporarily Unavailable
    2. Content-Type: text/html
    3. Content-Length: 194
    4. Connection: keep-alive
    5. Server: APISIX web server
    6. <html>
    7. <head><title>503 Service Temporarily Unavailable</title></head>
    8. <body>
    9. <center><h1>503 Service Temporarily Unavailable</h1></center>
    10. <hr><center>openresty</center>
    11. </body>
    12. </html>

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

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