【问题标题】:rate limit in yii2 vs using nginx for rate limitingyii2 中的速率限制与使用 nginx 进行速率限制
【发布时间】:2017-01-11 01:35:29
【问题描述】:

通过 yii2 进行速率限制与使用 nginx(例如作为反向代理和速率限制器)有什么区别?

参考号:Yii2 Rate Limiting Api

【问题讨论】:

    标签: nginx yii2


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      不同之处在于您为 api 服务器的调用配置速率限制的 web 应用程序的哪一层。

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

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

      相反,在 nginx 中你直接在 Http Server 配置中设置这个限制,服务器将负责与 headers 对话,然后限制请求。

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多