Ограничение экспресс-скорости по сравнению с NGINX на сервере узлов - PullRequest
0 голосов
/ 15 мая 2018

В настоящее время я использую модуль express-rate-limit, чтобы заблокировать несколько запросов от одного и того же ip или зарегистрированной учетной записи пользователя на моем сервере узлов, и это неплохо работает против атак DoS. Этот сервер представляет собой небольшую локальную компанию, которой требуется только один экземпляр, поскольку у него не слишком много пользователей и его вычислительные требования не слишком интенсивны.

В последнее время я много читал о nginx, и многие люди рекомендуют использовать его на серверах узлов, но я не вижу основных преимуществ его использования в такого рода приложениях.

Как будет nginx лучше для моего приложения? Что он может сделать, что другие npm modules не могут с точки зрения безопасности для одного серверного приложения?

1 Ответ

0 голосов
/ 15 августа 2019

Ну, я не эксперт по NGINX, но в настоящее время я использую NGINX в производстве на своем экземпляре EC2.Когда дело доходит до ограничения скорости, есть несколько опций, доступных для экспресса

  • . Вы можете использовать redis как хранилище, получать IP-адрес каждого входящего запроса и проверять, сколько хитов у них в данный момент есть.прежде чем принять решение об их обслуживании.Это может быть промежуточное программное обеспечение, которое работает на всех маршрутах
  • Вы можете использовать библиотеку, такую ​​как express-rate-limit или rate-limiter-flexible, которая будет обрабатывать часть redis для вас
  • Теперь, когда вывозьмите NGINX, это веб-сервер, сильная сторона которого не является ограничение скорости, если быть точным.Тем не менее, он поддерживает ограничение скорости, если вы измените конфигурацию. ЗДЕСЬ представляет собой представление об ограничении скорости NGINX.
  • Другой вариант, который вы не рассмотрели, называется HAProxy, который представляет собой балансировщик нагрузки, который считается превосходным для таких задач, как ограничение скорости.Вы можете прочитать о ЗДЕСЬ

Давайте поговорим о второй части вашего вопроса

  1. Ограничение скорости внутри приложения - плохая идея.Это не относится к заявке как таковой.Это не часть бизнес-логики.Кроме того, он не работает хорошо в кластерном режиме (более чем одно ядро ​​работает одновременно), если вы не настроите его для поддержки кластера.
  2. Для ограничения скорости при использовании конфигурации NGINX просто необходимы 2 дополнительные строки, как показано наРанее ссылку я разместил.Если вдруг вы захотите добавить дополнительный маршрут или освободить какой-либо маршрут от ограничения скорости, NGINX может легко это сделать.
  3. Если вы хотите освободить адреса облачного фронта или адреса сервера CDN от ограничения скорости, вы можете добавить белый список IP-адресов в conf NGINX, чтобы он освободил их.Выполнение этого в приложении будет настоящей болью, так как вам придется выполнять git commit, redeploy и т. Д. THIS ответ охватывает, как освобождать адреса
...