Re: auth request и conn limit

Maxim Dounin mdounin на mdounin.ru
Пт Апр 1 11:03:35 UTC 2016


Hello!

On Fri, Apr 01, 2016 at 03:02:01AM -0400, Vans_ wrote:

> Добрый день всем!
> 
> Можно ли заставить работать одновременно conn_limit и auth_request
> одновременно?
> 
> Желаемая схема такая:   
> location /data0002 {
> 	auth_request /authcheck;
>         auth_request_set $error_code $upstream_http_x_error_code;
>         auth_request_set $token $upstream_http_x_token;
>         limit_conn connections 1;
> 	limit_conn_status 429;        
> 	error_page 403 =200 /forbiden;
> 	error_page 429 =200 /to_many_connections;
> 	proxy_intercept_errors on;
> 	proxy_pass_request_body off;
> 	proxy_set_header Content-Length "";
> 	proxy_pass http://127.0.0.1:8000/data;
>         error_page 500 501 502 503 504 404 403 =200 /no_data;
> }
> 
> Но смысл в том, что похоже conn_limit отрабатывает до auth_check и $token
> устанавливается после того, как отработает conn_limit.
> Причем, задать $token статически, то conn_limit отрабатывает, но это не
> интересно.....

Так работать не будет, т.к. limit_conn работает до авторизации, а 
$token доступен только после.

Извлекайте $token из запроса до авторизации (а в процессе 
авторизации, соответственно, подтверждайте право его 
использования).  Тогда всё будет работать.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru