通过编程方式阻止 URL 以达到速率限制、解除阻止或使阻止过期

通过编程方式阻止 URL 以达到速率限制、解除阻止或使阻止过期

我的要求是,如果客户端每小时发送超过 x 个请求,则能够对特定 URL 向我们的服务器进行速率限制或暂时硬阻止任何请求。

大约有 250K 个 URL 可能被阻止。

客户端有他们自己制作的唯一的 URL,因此类似于:

customer1.example.com/post/location/36A107F4-DD68-47F2-A093-753F7A427CF6/

其中 customer1 是顾客姓名,而 36A107F4-DD68-47F2-A093-753F7A427CF6 是其独特的位置指引

我希望我的应用程序能够进行某种 API 调用来阻止给定的 url,然后使用 API 调用来解除阻止或让阻止在 x 分钟后过期。

使用任何开源服务如 haproxy 或 nginx 可以实现这一点吗?

答案1

这里有一些想法......这些并不特定于 nginx 或 HAProxy,但也许您可以使用相同的想法。

本文讨论了他们如何使用 Varnish 为应用程序实现每个 URL 的速率限制。该应用程序使用自定义 HTTP 标头与 Varnish 通信,而不是 API 调用,但思路类似。

使用 Apache,你可以使用编程方式做类似的事情重写映射...在数据库中查找请求,对于当前速率受限的请求,将其重写为错误页面,否则不加修改地让其通过。打开/关闭特定 URL 的速率限制只需在数据库中更改一行即可。

相关内容