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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru