nginx limit_req_zone似乎不起作用

时间:2014-01-13 04:22:22

标签: nginx

我正试图通过openresty

使用nginx设置某个uri的全局限制

使用以下配置,如果我卷曲此框,无论我每分钟请求多少次,我都会得到204。     worker_processes 1;     error_log logs / error.log;

events {
}

http {
    log_format spec_format '$request_uri $const $status';
    access_log logs/access.log spec_format;#off;
    resolver 10.0.0.2;

    limit_req_log_level error;
    limit_req_zone  $const  zone=one:100k   rate=1r/m;

    server {
        set $const 1;

        listen 80;


        location / {
            return 200 "invalid url";
        }

        location ~* /request/? {
            limit_req   zone=one  burst=1 nodelay;
            return 204;
        }


        location /health/ {
            return 200 "healthy";
        }
    }
}

从文档中我找不到任何明显的东西(我尝试过很多东西)。

如果有帮助,该框在EIP和Ubuntu 13.10后面的AWS上运行。我正在使用openresty.org的openresty-1.5.8.1。

另外,我想要工作的实际限制是大约24000r / s,还有其他设置我认为可能会有冲突,但即使是剥离它也不会像我想象的那样。

1 个答案:

答案 0 :(得分:1)

问题可能是$const处理时limit_req_zone尚未设置。您是否在日志中看到了正确的$cost值?

limit_req_module将ignore empty values,来自文档:

  

键是指定变量的任何非空值(空值   没有计算。)