我正试图通过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,还有其他设置我认为可能会有冲突,但即使是剥离它也不会像我想象的那样。
答案 0 :(得分:1)
问题可能是$const
处理时limit_req_zone
尚未设置。您是否在日志中看到了正确的$cost
值?
limit_req_module将ignore empty values,来自文档:
键是指定变量的任何非空值(空值 没有计算。)