API 管理解决方案

API 管理解决方案

我目前正在构建一个 API,正在寻找一个工具来允许我监控(在 GUI 中)和限制使用速率。我遇到了一些企业解决方案,包括:

Apigee 企业计划正是我想要的,但是计划开始每月 3000 美元,超出了我的承受范围。其他解决方案要么太贵,要么不能提供我想要的解决方案。

这让我考虑了一些开源选项,包括:

Varnish 似乎是一个相当完整的解决方案;但是,我需要构建一个 GUI 来可视化数据。

我的最终选择是使用 EventMachine 和 ruby​​ 从头开始​​构建解决方案。

有什么建议吗?

答案1

我认为你高估了这件事的难度。

在您的代码中,只需使用 redis/memcached/mongodb 计数器(根据您的需要,可以是 1/24 小时计数器或每小时/每日计数器),并在达到限制时返回相应的错误。您可以立即增加计数,也可以在处理日志时异步执行此操作。

为了显示数据,只需制作一个简单的网页,根据需要汇总计数。

对于我们的使用,我们不需要精确地限制事物,因此我们通常只需通过我们的日志基础设施进行记录,其中一个(通过 scribe 实时)日志处理器将总结这类事情。输出是一个简单的 HTML 页面,其中包含繁忙的 IP/客户端、nagios 可以监控的一些页面以及 munin 从中提取数据以制作图表的一些 URL。

答案2

您可以使用纳克西使用 nginx。只需使用您需要的限制规则覆盖您的 /requestDenied 位置:

将 naxsi 重定向参数映射到相应的限制:

map $arg_uri $limit_uri {
  123.php   limit_zone1;
  234.php   limit_zone2;
default limit_default;
}

使用位置限制:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }

相关内容