Реализуйте динамическую блокировку IP, убейте краулеров! !

Java задняя часть

оригинал:сегмент 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)», загрузите быстро!

Чувствуйте себя хорошо, не забудьте указать на похвалу + экспедирование О!