dynamic-limit-req: Модуль NGINX для динамической блокировки IP и периодического его разблокирования
Установка
Вы можете установить этот модуль в любом дистрибутиве на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-dynamic-limit-req
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-dynamic-limit-req
Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_dynamic_limit_req_module.so;
Этот документ описывает nginx-module-dynamic-limit-req v1.9.3, выпущенный 29 января 2021 года.
Введение
Модуль ngx_dynamic_limit_req_module используется для динамической блокировки IP и периодического его разблокирования.
Принцип
Модуль ngx_dynamic_limit_req_module используется для ограничения скорости обработки запросов по определенному ключу, в частности, скорости обработки запросов, поступающих с одного IP-адреса. Ограничение осуществляется с использованием метода "протекающего ведра".
О модуле
Этот модуль является расширением на основе ngx_http_limit_req_module.
Пожертвования
Разработчики неустанно работают над улучшением и развитием ngx_dynamic_limit_req_module. Вложено много часов, чтобы предоставить программное обеспечение таким, какое оно есть сегодня, но это крайне трудоемкий процесс без финансового вознаграждения. Если вам нравится использовать это программное обеспечение, пожалуйста, подумайте о том, чтобы сделать пожертвование разработчикам, чтобы они могли уделять больше времени внедрению улучшений.
Alipay:

Расширение
Этот модуль может работать с RedisPushIptables, приложение на уровне приложения сопоставляет, а затем сетевой уровень перехватывает. Хотя перехват на сетевом уровне сэкономит ресурсы, существуют и недостатки. Предположим, что фильтруется только один конкретный интерфейс и не фильтруются другие интерфейсы, те, которые не нуждаются в фильтрации, также будут недоступны. Хотя точный контроль невозможен на сетевом уровне или уровне транспортировки, он может быть точно контролируем на уровне приложения. Пользователи должны взвесить, какое решение более подходит для события в данный момент.
Api-count
Если вы хотите использовать функцию подсчета API, пожалуйста, используйте limithit-API_alerts. Поскольку не всем нужна эта функция, она не была объединена в основную ветку. Пользователи, которым не нужна эта функция, могут пропустить это описание.
git clone https://github.com/limithit/ngx_dynamic_limit_req_module.git
cd ngx_dynamic_limit_req_module
git checkout limithit-API_alerts
root@debian:~# redis-cli
127.0.0.1:6379> SELECT 3
127.0.0.1:6379[3]> scan 0 match *12/Dec/2018* count 10000
127.0.0.1:6379[3]> scan 0 match *PV count 10000
1) "0"
2) 1) "[13/Dec/2018]PV"
2) "[12/Dec/2018]PV"
127.0.0.1:6379[3]> get [12/Dec/2018]PV
"9144"
127.0.0.1:6379[3]> get [13/Dec/2018]PV
"8066"
127.0.0.1:6379[3]> get [13/Dec/2018]UV
"214"
Этот модуль совместим со следующими версиями nginx:
Автор Gandalf zhibu1991@gmail.com
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-dynamic-limit-req.