limit_req applied to upstream auth_request requests?
jarstewa
nginx-forum at forum.nginx.org
Tue Jul 17 17:08:13 UTC 2018
Hi, I currently have an nginx configuration that uses the limit_req
directive to throttle upstream content requests. Now I'm trying to add
similar rate limiting for auth requests, but I haven't been able to get the
auth throttle to kick in during testing (whereas the content throttle works
as expected). Is there some known limitation of using limit_req against
auth_request requests, or do I simply have a problem in my configuration?
Thank you.
http {
map $request_uri $guid {
default "unknown";
~^/out/(?P<id>.+?)/.+$ $id;
}
map $http_x_forwarded_for $last_client_ip {
default $http_x_forwarded_for;
~,\s*(?P<last_ip>[\.\d]+?)\s*$ $last_ip;
}
limit_req_zone $guid zone=content:20m rate=500r/s;
limit_req_zone $guid zone=auth:20m rate=100r/s;
server {
location /out/ {
auth_request /auth;
proxy_pass $upstream_server;
proxy_cache content_cache;
set $cache_key "${request_path}";
proxy_cache_key $cache_key;
proxy_cache_valid 200 301 302 10s;
#Throttling works here <---
limit_req zone=content burst=50 nodelay;
limit_req_status 429;
}
location /auth {
internal;
proxy_pass_request_body off;
proxy_pass $upstream_server/auth?id=$guid&requestor=$last_client_ip;
proxy_cache auth_cache;
set $auth_cache_key "${guid}|${last_client_ip}";
proxy_cache_key $auth_cache_key;
proxy_cache_valid 200 301 302 5m;
proxy_cache_valid 401 403 404 5m;
#Throttling seems not to work here <---
limit_req zone=auth burst=50 nodelay;
limit_req_status 429;
}
}
}
Posted at Nginx Forum: https://forum.nginx.org/read.php?2,280554,280554#msg-280554
More information about the nginx
mailing list