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

Fedor Dikarev fe на hamilton.rinet.ru
Чт Апр 18 11:53:28 UTC 2019


18.04.2019 11:16, Oleg A. Mamontov пишет:
> 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 ?

Привет, Олег!

Спасибо за совет: да, все просто и логично, я почему-то не подумал в эту
сторону. Сегодня-завтра попробуем поднять этот вариант на QA,
понагружаем немного и отпишусь о результатах.
--
Fedor Dikarev


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