php限制用户调用app接口的刷新频率,1秒不能达到20

php限制用户调用app接口的刷新频率,1秒不能达到20。看了很多类似的,但不看懂什么意思,是要具体的建新表保存访问者的信息还是怎么样。(新手程序员)能不能说下怎么弄,最好能有代码。

阅读 5k
2 个回答

不建议在PHP里面做,可以考虑在Nginx和防火墙iptables里面做.
比如在Nginx里可以这样配置:

在http里server前加入:
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
在server里加入:
limit_req zone=allips burst=5 nodelay;
超过每秒20次连接,则把IP加入黑名单,直接deny掉这些IP.

注意,上面提到的用户都是以IP进行识别的,存在误杀的可能.

nginx层面做限制。
可以使用openresty,用lua来写,每次请求都接口自增一次访问记录,可以把值记录到redis中。
在单位时间内达到最大限制,返回错误的提示码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题