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

Oleg A. Mamontov oleg на mamontov.net
Чт Апр 18 13:23:44 UTC 2019


On Thu, Apr 18, 2019 at 04:59:10PM +0500, Илья Шипицин wrote:
>при такой маршрутизации запросов возможно потребуется включить *log*_
>*subrequest*

Да нет, не потребуется.

>чт, 18 апр. 2019 г. в 16:53, Fedor Dikarev <fe at hamilton.rinet.ru>:
>
>> 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

-- 
Cheers,
Oleg A. Mamontov


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