1

mod_luaに基づいて Apache 2.4 用の独自のレート リミッターを作成するとします。アイデアは、IP ごとの時間間隔ごとの要求を制限することです。

このタスクでは、IP ごとの以前のリクエスト数などを含む、グローバルにアクセス可能なデータ構造を維持する必要があります。

mod_lua の種類は、 ivm_setメソッドとivm_getメソッドを使用したリクエスト間の共有メモリをサポートしますが、1 つのワーカー プロセス内でのみサポートします。

値は...プロセスごとに保存されます(したがって、プリフォークmpmではあまり役に立ちません)

通常、複数のワーカー プロセスを使用しています。私たちの場合、いくつかのプロセスで mod_mpm_event を使用しています。その場合、この小さな「以前のリクエスト」データ構造をどのように共有しますか?

現在考えられる唯一の方法は、mod_lua でサポートされているデータベースを使用することです。ただし、このような簡単なタスクに対しては、非常に複雑なソリューションのようです。

質問: mod_lua ですべてのリクエスト間で共有メモリを実現するにはどうすればよいですか?

PS: mod_qosのような既存のレート リミッターがあることは知っています。実際の使用例は別のものですが、レート リミッタの例は共通の理解を得るのに役立ちます。

4

0 に答える 0