我目前正在build立一个API,并正在寻找一个工具来允许我监视(在一个GUI)和速率限制使用。 我遇到了一些企业解决scheme,包括:
Apigee企业计划正是我正在寻找,但计划开始在$ 3000 /月,这是超出我的价格范围。 其他解决scheme都是太昂贵或不提供我正在寻找的解决scheme。
这使我看到了一些开源选项,包括:
清漆似乎是一个相当完整的解决scheme; 不过,我需要构build一个GUI来显示数据。
我最后的select将从头开始使用EventMachine和rubybuild立一个解决scheme。
任何build议?
我认为你高估了这是多么的困难。
在你的代码中,只需要一个带有redis / memcached / mongodb的计数器(根据你的需要select1/24小时计数器或每小时/每天计数器),并在满足限制时返回相应的错误。 您可以在那里增加计数,或者在处理日志时asynchronous执行。
为了显示数据,只需根据需要制作一个简单的网页来总结计数。
对于我们的使用,我们不需要精确地限制事物,所以我们通常只是login我们的日志基础设施,其中一个(实时通过抄写)日志处理器将总结这种事情。 输出结果是一个简单的HTML页面,其中包含繁忙的IP /客户端,Nagios可以监控的一些页面以及一些url,这些URL可以从数据中提取图表。
你可以使用nginx和nginx。 只需使用您需要的限制规则覆盖您的/ requestDenied位置:
将naxsiredirect参数映射到相应的限制:
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; }