23.06.2025

Безопасность Nginx. Контроль ресурсов и ограничения

Nginx — на сегодняшний день один из самых популярных веб-серверов, и эта популярность обусловлена тем, что он очень быстро и легко настраивается. Обратная сторона такой популярности — этот веб-сервер часто становится целью вредоносных атак. И в один не особенно прекрасный день вы можете столкнуться с ситуацией, когда ваш не имеющий лимитов nginx «упал» после того, как израсходовал доступные системные ресурсы. Поэтому стоит контролировать и ограничивать ресурсы, потребляемые Nginx.

Все ограничения задаются в конфигурационном файле nginx. Здесь будет описан один из вариантов настройки на примере Ubuntu 20.04. Ограничения вносятся в файл /etc/nginx/nginx.conf. Каждая директива должна заканчиваться точкой с запятой. Далее будут описаны наиболее важные параметры.

Глобальные настройки

Эти настройки повлияют на весь сервер. Описание параметров:

Дисковые операции

Настройки в этой секции определяют, как именно nginx будет работать с диском:

Сжатие и кэширование

Вы можете кэшировать некоторые данные, чтобы заставить nginx работать быстрее. Сжатие в свою очередь уменьшит поток отправляемого веб-сервером трафика:

Настройки безопасности

Вы можете ограничить доступ для парсеров, ботов, загрузчиков ит.д. Просто добавьте показанную ниже конструкцию в описание раздела, доступ к которому нужно ограничить. Чаще всего доступ ботам запрещают глобально ко всему сайту:

if ($http_user_agent ~* LWP::curl|wget|*bot) {
return 403;
}

Кроме того, вы можете вообще разрешить доступ к некоторым разделам веб-сайта только с определенных IP-адресов. Может быть полезно, например, ограничить таким образом доступ к административной части вашего сайта:

location /admin/ {
## Разрешаем доступ с вашего IP
allow xxx.xxx.xxx.xxx/32;
## Блокируем подключение с любых других адресов
deny all;
}

Заключение

В этой статье описано, как оптимизировать работу сервера nginx, и приводится несколько советов по повышению уровня безопасности.