Apache 2.4 + mod_lua:请求之间共享状态

时间:2017-08-28 08:29:33

标签: apache mod-lua

想象一下,你想根据mod_lua为Apache 2.4编写自己的速率限制器。这个想法是限制每个IP的每个时间间隔的请求。

对于此任务,您需要维护一个全局可访问的数据结构,其中包含例如每个IP先前请求的计数。

mod_lua支持使用 ivm_set ivm_get 方法的请求之间的共享内存,但只支持一个工作进程:

  

值...存储在每个进程的基础上(因此它们对prefork mpm不会有太大帮助)

通常您使用多个工作进程。在我们的例子中,我们使用mod_mpm_event和几个进程。在这种情况下,您如何分享这个小“先前请求”数据结构?

我目前唯一能想到的方法是使用mod_lua支持的数据库。但是,对于这么简单的任务来说,这似乎是一个非常复杂的解决方案。

问题:如何在mod_lua中的所有请求之间完成共享内存?

PS:我知道现有的速率限制器如mod_qos。我们的实际用例是不同的,但速率限制器示例有助于达成共识。

0 个答案:

没有答案