limit-count
简介
key 是可以被用户自定义的,只需要修改插件的一行代码即可完成。并没有在插件中放开是处于安全的考虑。
如何使用
下面是一个示例,在指定的 route
上开启了 limit count
插件:
你也可以通过 web 界面来完成上面的操作,先增加一个 route,然后在插件页面中添加 limit-count 插件:
如果启用单 redis 策略,请看下面例子:
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 次,前两次访问都会正常访问:
curl -i http://127.0.0.1:9080/index.html
当你第三次访问的时候,就会收到包含 503 返回码的响应头:
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
插件了。其他插件的开启和移除也是同样的方法。