оригинал:сегмент fault.com/ah/119000001…
Чтобы заблокировать некоторые поисковые роботы или запросы вредоносных пользователей к серверу, нам необходимо создать динамический черный список IP-адресов. Для IP-адресов из черного списка в обслуживании отказано.
Существует множество способов реализации функции черного списка IP:
1. На уровне операционной системы настроить iptables для отклонения сетевых запросов с указанного IP-адреса;
2. На уровне веб-сервера настройте черный список IP-адресов с помощью параметра отказа самого Nginx или плагина lua;
3. На уровне приложения проверьте, находится ли IP-адрес клиента в черном списке, прежде чем запрашивать услугу.
Чтобы упростить управление и совместное использование, мы решили реализовать функцию черного списка IP-адресов через архитектуру Nginx + Lua + Redis, Схема архитектуры выглядит следующим образом:
1. Установите модуль Nginx+Lua
Мы рекомендуем OpenResty, сервер Nginx, который интегрирует различные модули Lua:
2. Установите и запустите сервер Redis.
3. Пример настройки Nginx:
Конфигурация Nginx, где
lua_shared_dict ip_blacklist 1m
Процесс Nginx выделяет 1 МБ общей памяти для кэширования черного списка IP-адресов.
access_by_lua_file lua/ip_blacklist.lua;
Определяет местоположение сценария LUA.
4. Настройте сценарий LUA, чтобы регулярно получить последний черный черный список IP из Redis.
5. Новый набор данных данных IP_BlackList на сервере Redis и присоединиться к последнему черным списке IP.
После выполнения вышеуказанных шагов перезагрузите nginx, и конфигурация вступит в силу. Если вы получите доступ к серверу в это время, если ваш IP-адрес находится в черном списке, доступ будет запрещен, как показано ниже:
Выше приведена функция черного списка IP-адресов, реализованная Nginx+Lua+Redis, которая имеет следующие преимущества:
1. Конфигурация простая и легкая, практически не влияет на производительность сервера;
2. Несколько серверов могут совместно использовать черный список через экземпляры Redis;
3. Динамическая настройка, черный список в Redis можно задать вручную или каким-то автоматическим способом.
Рекомендуемые последние горячие статьи:
1.Более 1000 вопросов и ответов на собеседовании по Java (последняя версия 2021 г.)
2.Не используйте экран if/else, полный экранов, попробуйте режим стратегии, это вкусно! !
3.Какого черта! Каков новый синтаксис для xx ≠ null в Java?
4.Выпущен Spring Boot 2.5, и темный режим слишком жареный!
5.Последний выпуск «Руководства по разработке Java (издание Songshan)», загрузите быстро!
Чувствуйте себя хорошо, не забудьте указать на похвалу + экспедирование О!