【问题标题】:Can Kong rate limit per endpoint?Kong 可以限制每个端点的速率吗?
【发布时间】:2018-05-04 05:30:33
【问题描述】:

我可以配置 Kong 的 rate limiting plugin,这样它就可以对给定 API 中的每个端点实施限制,如下所示:

$ curl -X POST http://kong:8001/apis/{api}/plugins \
    --data "name=rate-limiting" \
    --data "config.second=5"

不过,我想每个端点配置不同的速率限制。例如,我想允许:

  • http://localhost:8000/endpoint1 使用每个 IP 5 个请求/秒的速率限制
  • http://localhost:8000/endpoint2 使用每个 IP 每秒 10 个请求的速率限制

Kong 可以做到这一点吗?我看到一个与此相关的open issue,但有什么解决方法吗?

【问题讨论】:

    标签: rate-limiting kong api-gateway


    【解决方案1】:

    您能否将每个端点变成一个 Kong API,然后对每个 API 应用速率限制?

    【讨论】:

      【解决方案2】:

      我相信 Kong 无法在 IP 模式下工作。但是要克服的是您将身份验证和速率限制结合在一起。 结合这个你可以说

      API 1 - limited to 5 request/second for consumer 1
      API 1 (again) - limited to 10 request/second for consumer 2
      API 2 - limited to 25 request/second from consumer 1
      

      要实现这一点,您需要在 kong 中为您要控制的 API 启用身份验证,然后为每个使用者/api 分配费率。

      这将使您能够控制来自消费者的请求,这样他们就无法从多个 IP 发出额外的请求。 (如果你愿意)

      【讨论】:

        【解决方案3】:

        在 Kong .13 之前,这是不可能的。然而,在Kong .13 中,API object 被分成两部分,routesservices

        使用这些工具,您应该能够为 API 中的不同端点应用不同的插件。

        【讨论】:

        • 你有什么建议吗?
        • 当然!一般来说,您将首先为您的上游 API 添加一个service。这是传入请求将被路由的地方。接下来,您将添加一个覆盖整个 API 的 route 并将其绑定到服务。然后,只需为您想要不同速率限制的端点添加另一条路由。最后,为您第二次添加的路线添加速率限制器。
        猜你喜欢
        • 2023-01-22
        • 2021-09-08
        • 1970-01-01
        • 2014-11-11
        • 1970-01-01
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多