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