Re: Получить ключ limit_rate в логе rate_limit-а

Oleg A. Mamontov oleg на mamontov.net
Чт Апр 18 08:16:43 UTC 2019


On Wed, Apr 17, 2019 at 10:42:37PM +0300, Fedor Dikarev wrote:
>Привет!
>
>Возникла задача rate_limit-итить обращения к api при помощи Nginx-а и 
>таким образом защититься от DDOS-а.
>Авторизация к api идет через jwt, в ключе есть логин пользователя. 
>Поэтому я уже заказал demo nginx plus, планирую воспользоваться 
>функционалом jwt и rate limit-ить по логину, примерно так:
>>auth_jwt_claim_set $login info login;
>> limit_req_zone $login zone=one:10m rate=1r/s;
>
>а дальше хочется получить список нехороших логинов, через которые нас 
>пытаются досить.
>Прочитал доку https://www.nginx.com/blog/rate-limiting-nginx/ -- там 
>написано что я получу адрес клиента, request и хостнейм в слуяае 
>превышения лимита. И это здорово.
>А можно как-то получить значение ключа (в моем случае это логин 
>пользователя), который привысил rate limit?
>
>Пока есть гипотеза логгировать логин в access.log и потом 
>коррелировать access.log и error.log, но выглядит немного странно. И 
>вдруг можно получить результат сильно проще.

Перехватить 503 с помощью error_page и обработать в специальном location
с кастомизированным log_format ?

-- 
Cheers,
Oleg A. Mamontov

mailto: oleg at mamontov.net

skype:  lonerr11
cell:   +7 (903) 798-1352


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