Nginx – вебсервер разработка которого направлена на работу с высокими нагрузками. Но не зависимо от возможностей nginx, когда нужно ограничить нагрузку на сайт/сервер. Соображения тут могут быть разные, во первых это препятствие любителям скачать весь сайт, а потом выложить его под другим именем, слабая конечно защита от этого, во вторых бывают пиковые, кратковременные нагрузки, ради которых расширять аппаратную часть сервера нет смысла.
В nginx есть два модуля ngx_http_limit_zone_module – предназначенный ограничивать число одновременных соединений с сервером и ngx_http_limit_req_module – он нужен для ограничения числа запросов за единицу времени.Большой плюс этих модулей в том, что они направлены на конкретный адрес, то есть ограничивают соединения или число запросов только для каждого ip адреса.
Ограничение числа одновременных соединений(закачек) нужно там, где скачиваются большие файлы(фильмы, образы, картинки).Настройка состоит из двух частей. Сначала в секции http описывается директива limit_zone, это описывается хеш (зона) для хранения состояния соединений, сессий. Далее уже в location или для всего виртуалхоста описывается число допустимых соединений c помощью limit_conn.
В этом примере, мы ограничили число одновременных закачек(соединений) для всего виртуального хоста hilik.org.ua.
Настройка limit_req очень похожа на limit_zone. Точно так же, настраивается зона (limit_req_zone) для хранения состояния сессий, состояние сессий так же базируется на ip адресе с которого пришел запрос и так же вносятся ограничения в виртуал хост или в location с помощью limit_req.
В limit_req присутствует пареметр burst – этот параметр определяет максимальное, кратковременное превышение лимита. При этом для дальнейшиг запросов с превысившего лимит ip адреса будет пересчитано число запросов и выровняно в определенный лимит. Ну в общем если в 1 секунду пришло с адреса 4 запроса то в следующую секунду не будет обработано ни одного запроса. Пока не вернется число запросов в секунду в нормальный лимит.
При превышении лимитов, как limit_zone так и limit_req_zone, nginx возвращает 503 ошибку.
Nginx – вебсервер разработка которого направлена на работу с высокими нагрузками. Но не зависимо от возможностей nginx, когда нужно ограничить нагрузку на сайт/сервер. Соображения тут могут быть разные, во первых это препятствие любителям скачать весь сайт, а потом выложить его под другим именем, слабая конечно защита от этого, во вторых бывают пиковые, кратковременные нагрузки, ради которых расширять аппаратную часть сервера нет смысла.
В nginx есть два модуля ngx_http_limit_zone_module – предназначенный ограничивать число одновременных соединений с сервером и ngx_http_limit_req_module – он нужен для ограничения числа запросов за единицу времени.Большой плюс этих модулей в том, что они направлены на конкретный адрес, то есть ограничивают соединения или число запросов только для каждого ip адреса.
Ограничение числа одновременных соединений(закачек) нужно там, где скачиваются большие файлы(фильмы, образы, картинки).Настройка состоит из двух частей. Сначала в секции http описывается директива limit_zone, это описывается хеш (зона) для хранения состояния соединений, сессий. Далее уже в location или для всего виртуалхоста описывается число допустимых соединений c помощью limit_conn.
В конфиге nginx.conf настройка выглядит так:
NGINX:
В этом примере, мы ограничили число одновременных закачек(соединений) для всего виртуального хоста hilik.org.ua.
Настройка limit_req очень похожа на limit_zone. Точно так же, настраивается зона (limit_req_zone) для хранения состояния сессий, состояние сессий так же базируется на ip адресе с которого пришел запрос и так же вносятся ограничения в виртуал хост или в location с помощью limit_req.
В конфиге настройка выглядит так:
NGINX:
В limit_req присутствует пареметр burst – этот параметр определяет максимальное, кратковременное превышение лимита. При этом для дальнейшиг запросов с превысившего лимит ip адреса будет пересчитано число запросов и выровняно в определенный лимит. Ну в общем если в 1 секунду пришло с адреса 4 запроса то в следующую секунду не будет обработано ни одного запроса. Пока не вернется число запросов в секунду в нормальный лимит.
При превышении лимитов, как limit_zone так и limit_req_zone, nginx возвращает 503 ошибку.