大约每秒c:NGINX个计数请求

NGINX count requests per second

我正在为NGINX开发一个反应用程序层攻击模块,我必须每秒(每秒)对请求进行计数。这个想法是要使攻击者自动检测器,当请求率增加时,它会打开过滤。

这是在shell脚本的帮助下发生的,该脚本每秒读取一次访问日志并计算请求速率。问题在于这不是非常有效的性能。

如果您对我该如何实现有任何想法,请分享您的想法。

谢谢!


您可以使用HttpLimitReqModule:

1
2
3
4
5
6
7
8
9
10
11
12
http {
limit_req_zone  $binary_remote_addr  zone=one:10m   rate=1r/s;

...

server {

    ...

    location /search/ {
        limit_req   zone=one  burst=5;
    }

参考:http://wiki.nginx.org/HttpLimitReqModule


在access_log上使用tail -f -s。非常有效。