Ограничение скорости / регулирование с помощью Tomcat (и Spring REST) - PullRequest
0 голосов
/ 22 января 2019

Я читаю много тем сейчас, но моя проблема не может быть решена в достаточной мере:

Если запущен веб-сервер tomcat с бэкэндом с пружинным упором, должен должен быть способом ограничения возможных запросов в секунду / минуту / ... на основе, скажем, IP-адреса запрашивающего , Мои исследования привели к следующим возможностям:

  1. Используйте Guava RateLimiter или https://github.com/weddini/spring-boot-throttling и проверьте все запросы в preHandle. Но так как это не учитывает, какие IP-адреса в какое время запрашивались, было бы целесообразнее проверить что-то вроде хранилища REDIS (IP / время последнего доступа)
  2. Поместите более продвинутый веб-сервер перед tomcat, который предлагает эту функцию (например, apache2 или nginx)

Теперь мне не нравится первое решение, поскольку запросы уже попадают в само приложение, а второе решение создает дополнительный уровень, который, как я не могу поверить, необходим для такой основной проблемы.

Итак, мой вопрос: какие методы и решения мне здесь не хватает? Я читал кое-что о семафоре клапана Tomcat, но, похоже, он просто ограничивает общую скорость запросов. Будет ли наиболее эффективно / возможно уже выполнять фильтрацию с некоторыми базовыми функциями, такими как iptables или fail2ban на порту 8443, и просто отбрасывать запросы по одному и тому же ip в заданный период времени?

...