Nginx VS DDoS-атак

Nginx VS DDoS-атак

ispmanager



Ограничиваем скорость запросов 


Это нужно, чтобы снизить нагрузку на сервер. У nginx есть буфер ограничения — сначала все запросы попадают в него, а далее уже с выбранной скоростью обрабатываются сервером без риска перегрузки. 

Для настройки достаточно двух директив, ограничивающих скорость: limit_req_zone и limit_req. Они создадут зону, где будут храниться данные запросов со всех уникальных IP, а $binary_remote_addr ограничит их скорость под указанный показатель rate (r/s). 


Балансируем нагрузку по серверам


Юзаем nginx в качестве прокси-сервера, чтобы существенно снизить риск атаки на конкретный сервер. Nginx циклически распределяет запросы, которые проецируются на серверы, если использовать директивы upstream и server. Если при балансировке добавить директиву proxy_pass через HTTPS, получится запустить обратный прокси.


Настраиваем отказ от подключения


Директива limit_conn обезопасит от DDoS-атаки через большое количество коннектов. Конфиг поможет не только поставить лимиты к серверу, но и контексту — можно идентифицировать каждый IP-адрес и ограничить число одновременных подключений. Если будет достигнуто ограничение, nginx станет отправлять ошибку 503 Service Unavailable, пока количество подключений не снизится.

А с помощью ispmanager защиту от DDoS-атаки можно подключить ещё легче. Она включается одной кнопкой и нужна для блокировки IP-адресов, с которых поступает большое количество запросов. Подробнее почитать можно в документации.


Сокращаем время на соединение


Дополнительно снизить нагрузку на сервер можно, если перестать грузить неактивные коннекты. Для этого есть сразу три крутых инструмента: 

  • Сжатие: nginx неплохо сжимает text/html через gzip. Можно настроить сжатие всех запросов, которые не будут кешироваться на прокси через директивы gzip_proxied. Nginx проверит Cache-Control поле заголовка и сожмёт ответ сервера, если он не кеширован. Профит — в дополнительной разгрузке сервера и ускоренных ответах. А ещё можно настроить сжатие статического контента одной кнопкой в панели ispmanager при создании сайта.
  • Кеширование: поможет директива proxy_cache_path, чтобы сохранить статичные ресурсы, и переменная $purge_method, чтобы сбрасывать кеш. Это позволит серверу отправлять копии уже запрошенных ресурсов без повторных запросов, а ещё ускорит время подключения и ответа. 
  • Подключение keep-alive-соединений, чтобы клиент и сервер могли использовать 1 TCP-соединение для массы последовательных HTTP-запросов. Используя директиву keepalive_timeout, можно задать время ожидания, в течение которого сервер будет ждать новых запросов через открытое соединение.


Управляем буферизацией


Функция активна по умолчанию, но можно её тонко настроить. Например, увеличить размер буфера для проксируемых ответов сервера с помощью директивы proxy_buffer_size. Это также улучшит производительность сервера и поможет переваривать большие объёмы данных.  




Report Page