yii2中的速率限制与使用nginx进行速率限制相比

时间:2017-01-10 14:52:05

标签: nginx yii2

通过yii2与使用nginx进行速率限制之间的区别是什么,例如反向代理和速率限制器?

参考:Yii2 Rate Limiting Api

2 个答案:

答案 0 :(得分:1)

区别在于您的Web应用程序的哪一层为api服务器的调用配置了速率限制。

在第一种情况Yii2中,您直接在php代码中配置限制。

使用yii\filters\RateLimitInterface实现Identity类中的方法(用于管理api调用数据的模型),然后yii将自动使用yii\filters\RateLimiter将限制标头添加到响应。

相反,在nginx中,您可以直接在Http Server配置中设置此限制,服务器将负责与标头对话,然后限制请求。

这里真正的问题是“我应该使用yii或nginx方法?”。答案可能会与您构建api服务的方式相同。

很多人可以说使用http服务器来处理这方面是最“自然”的方式,但yii2给你可以使用php来自定义速率限制,当你想要时,这会带来你的优势开发具有中/高复杂度的api服务器。

在某些(非常)罕见的情况下,您可以将yii2与nginx结合使用,以获得更加自定义的内容。

答案 1 :(得分:1)

应用率限制(如yii2)更灵活。例如,您可以为每个用户编写不同的限制。或者将请求放到某个队列中以备将来执行。但是超过该限制的每个请求仍然会遇到PHP脚本。

Nginx限制灵活性较低,但允许在PHP脚本之前停止请求。

Nginx限制通常用作DOS保护。通常的任务:例如,不允许从一个IP生成过多的PHP进程。

应用程序速率限制用作应用程序后端重载保护。它可以是数据库或外部API。此外,应用程序限制可用作业务逻辑的一部分(不同资费计划的不同速率限制等)