<div dir="ltr"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="font-size:12.8px"><div style="font-size:12.8px">Having the authentication server handling the 429_TOO_MANY_REQUESTS,<br>allows it to accommodate users with varying limits; <br>e.g. user1 is allowed 3 requests per second, and user2 is allowed 10 r/s.<br><br>The auth_request location can still specify the cache times of the responses<br>to whatever is wanted, like so:<br><br>location = /auth {<br>  internal;<br>  proxy_pass <a href="http://localhost:8888/auth">http://localhost:8888/auth</a>;<br><br>  proxy_pass_request_body off; # no need to send the POST body<br>  proxy_set_header Content-Length "";<br><br>  proxy_set_header X-Original-URI  $request_uri;<br>  proxy_set_header X-Real-IP       $remote_addr;<br>  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>  proxy_set_header X-Real-Method   $request_method;<br><br>  proxy_cache           AUTH;<br>  proxy_cache_valid     200 10m;<br>  proxy_cache_valid     401 403 1m;<br>  proxy_cache_valid     429 1s;<br>  proxy_cache_use_stale timeout updating http_500 http_502;<br>  proxy_cache_lock      on;<br>  proxy_cache_key       $request_method$request_uri$http_authorization;<br>}<br><br><br><br># HG changeset patch<br># User Anders L. V. Nicolaisen <<a href="mailto:alvn@alvn.dk">alvn@alvn.dk</a>><br># Date 1665061111 0<br>#      Thu Oct 06 12:58:31 2022 +0000<br># Node ID 1d2e22110b6abe7476417d925cc39178c6bd7d9e<br># Parent  ba5cf8f73a2d0a3615565bf9545f3d65216a0530<br>[nginx] allowing auth_request to proxy TOO_MANY_REQUESTS<br><br>diff -r ba5cf8f73a2d -r 1d2e22110b6a src/http/modules/ngx_http_auth_request_module.c<br>--- a/src/http/modules/ngx_http_auth_request_module.c   Thu Sep 08 13:53:49 2022 +0400<br>+++ b/src/http/modules/ngx_http_auth_request_module.c   Thu Oct 06 12:58:31 2022 +0000<br>@@ -138,6 +138,10 @@<br>             return ctx->status;<br>         }<br> <br>+        if (ctx->status == NGX_HTTP_TOO_MANY_REQUESTS) {<br>+            return ctx->status;<br>+        }<br>+<br>         if (ctx->status == NGX_HTTP_UNAUTHORIZED) {<br>             sr = ctx->subrequest;<br> <br></div></div></div></div></div></div></div></div>