Welcome! Log In Create A New Profile

Advanced

Conditional limit_req

May 03, 2012 03:36PM
Hello,

I'm using httpluamodule+redis to make a dynamic proxy to use in a mass
vhost environment. I need to limit requests/s for specifics http_host. I
tried to do something like that:

-------------------------------------------------------------------------------------
limit_req_zone $http_host zone=one:10m rate=1r/s;

upstream redisbackend {
server 127.0.0.1:6379;
}

server {

listen xxxxx:80 default_server;

location = /redis {
internal;
redis2_query get $arg_key;
redis2_pass redisbackend;
}

location / {
default_type 'text/html';
set $backendserver '';
set $limit '';

access_by_lua '
local key = ngx.var.http_host
local res = ngx.location.capture(
"/redis", { args = { key = key } }
)

m = ngx.re.match(res.body, "([a-z]+):([0-9\.]+):([0-9]+)")
if m ~= nil then
user = m[1]
ngx.var.backendserver = m[2]
ngx.var.limited = tonumber(m[3])
end
';

if ($limited = 1) {
limit_req zone=one burst=2;
}

proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_redirect off;

proxy_pass http://$backendserver:888;
break;

}
}

------------------------------------------------------------------------------------------------------------------------------

When I reload nginx I'm getting the following error:

nginx: [emerg] "limit_req" directive is not allowed here in
/etc/nginx/conf.d/default.conf:64


Is there a way to limit specific websites using just 1 virtual host (server
directive)?

Regards,

Guilherme
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Conditional limit_req

geberhart May 03, 2012 03:36PM

Re: Conditional limit_req

Francis Daly May 05, 2012 07:10AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 131
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready