- Для чего нужен Nginx
- Установка Nginx
- Настройка файрвола
- Настройка Nginx
- Настройка блоков server
- Проверка работы
- Типичные ошибки Nginx
- Основные команды для работы с сервером Nginx
Nginx — это высокопроизводительный веб-сервер и обратный прокси-сервер, используемый для обслуживания веб-сайтов, балансировки нагрузки и кэширования. Он разработан для быстрой обработки большого количества одновременных подключений при минимальном потреблении ресурсов.
В этой статье вы узнаете, как установить Nginx на Ubuntu, настроить его для работы и проверить корректность установки.
Для чего нужен Nginx
Nginx нужен для обработки, распределения и ускорения веб-трафика. Он выполняет роль посредника между пользователем и сервером, обеспечивая быструю и стабильную работу сайтов даже при высокой нагрузке.
Главные задачи Nginx:
- Обслуживание веб-сайтов. Он принимает запросы от пользователей и выдает им нужные страницы, изображения, файлы и другие ресурсы.
- Обработка статического контента. Nginx отлично справляется с передачей файлов — HTML, CSS, JavaScript, изображений и видео, делая это гораздо быстрее, чем многие другие серверы.
- Работа как обратный прокси. Сервер может принимать запросы и перенаправлять их к другим службам (например, php-fpm или Node.js), разгружая основное приложение.
- Балансировка нагрузки. Nginx распределяет запросы между несколькими серверами, что повышает отказоустойчивость и скорость работы сайта.
- Кэширование данных. Он может сохранять копии часто запрашиваемых страниц и выдавать их пользователям без обращения к основному приложению, сокращая время отклика.
- Защита и безопасность. Поддерживает SSL/TLS для шифрования соединений, ограничивает количество запросов и помогает предотвратить атаки.
Nginx используют как для небольших сайтов, так и для крупных систем с миллионами пользователей.
Установка Nginx
Чтобы установить веб-сервер Nginx, достаточно иметь компьютер или виртуальную машину с установленной Ubuntu. Этот сервер входит в стандартные репозитории системы, поэтому скачивать дополнительные пакеты не потребуется — установка выполняется всего несколькими командами в терминале.
Сначала стоит обновить список доступных пакетов, чтобы система могла получить самые свежие версии программ:
После завершения обновления можно установить Nginx:
Процесс установки займет несколько минут. Как только он завершится, добавим Nginx в автозагрузку, чтобы сервер автоматически запускался при каждом включении системы:
Далее важно убедиться, что веб-сервер действительно запущен и работает. Проверим его статус командой:

Если в строке состояния появится сообщение Active: active (running), значит установка прошла успешно, и сервер функционирует корректно.
Проверить работу можно и через браузер: достаточно ввести IP-адрес вашей машины или сервера в адресной строке. Если в ответ откроется стартовая страница Nginx с приветственным сообщением, то все настроено правильно.
Напоследок стоит убедиться, что Nginx действительно добавлен в автозагрузку. Для этого используем команду:
![]()
Если система ответит enabled, значит веб-сервер будет автоматически запускаться при каждом старте Ubuntu — установка завершена успешно, и Nginx готов к использованию.
Настройка файрвола
После установки Nginx необходимо настроить файрвол, чтобы ограничить доступ к серверу и оставить открытыми только нужные порты: 22 (SSH), 80 (HTTP) и 443 (HTTPS).
Порт 22 используется для удаленного подключения по SSH, а 80 и 443 — для обмена данными между сайтом и пользователями. При этом HTTPS — это защищенная версия HTTP, использующая SSL-сертификат для шифрования трафика.
Для начала установите утилиту UFW (Uncomplicated Firewall), которая упрощает настройку брандмауэра:
После установки откройте файл конфигурации, где будут описаны правила для веб-сервера Nginx:
Заполните файл следующим образом:
title=Web Server
description=Enable NGINX HTTP traffic
ports=80/tcp
title=Web Server (HTTPS)
description=Enable NGINX HTTPS traffic
ports=443/tcp
title=Web Server (HTTP,HTTPS)
description=Enable NGINX HTTP and HTTPS traffic
ports=80,443/tcp
Сохраните изменения и закройте редактор. Затем проверьте, что система распознала добавленные настройки:
Если в списке появится Nginx, значит все сделано верно. Теперь включите файервол и разрешите передачу трафика по нужным портам:
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
Команда ufw enable активирует брандмауэр, ufw allow 'Nginx Full' открывает порты 80 и 443, а ufw allow 'OpenSSH' — порт 22 для удаленного доступа.
Чтобы убедиться, что все работает корректно, проверьте текущие правила:
Если в статусе указаны разрешенные подключения для SSH, HTTP и HTTPS, значит файервол настроен правильно и ваш сервер теперь защищен от нежелательного трафика.
Настройка Nginx
После установки и настройки файрвола можно переходить к конфигурации Nginx. Управление этим веб-сервером сводится к редактированию и поддержке его конфигурационных файлов, которые находятся в каталоге /etc/nginx. В этой директории расположены три основных элемента: файл nginx.conf и два каталога — sites-available и sites-enabled.
Главный файл nginx.conf отвечает за общие настройки работы сервера. В нем задаются параметры, влияющие на производительность, логику обработки соединений и подключение других конфигурационных файлов.
Каталог sites-available содержит файлы с настройками виртуальных хостов — отдельных сайтов, работающих на одном сервере. Каждый файл описывает конкретный сайт: его доменное имя, IP-адрес, директории, логи и параметры безопасности. Каталог sites-enabled включает только активные сайты. Обычно он содержит ссылки на конфигурационные файлы из sites-available, что позволяет легко включать или отключать сайты без удаления их настроек.
Чтобы просмотреть главный конфигурационный файл, откройте его с помощью текстового редактора:
В нем можно увидеть структуру, разделенную на модули — директивы.

Каждая директива отвечает за определенный аспект работы сервера. Они бывают простыми (содержат только имя и значение) и блочными(включают дополнительные вложенные параметры, заключенные в фигурные скобки).
Рассмотрим некоторые из ключевых директив, встречающихся в конфигурации:
| Директива | Описание |
| user | Определяет пользователя, от имени которого выполняются процессы Nginx |
| worker_processes | Указывает количество рабочих процессов. Как правило, соответствует числу ядер процессора (значение auto устанавливает автоматически) |
| pid | Путь к файлу, в котором хранится идентификатор главного процесса |
| include | Подключает дополнительные файлы конфигурации |
| events | Контекст, в котором задаются параметры, которые влияют на сетевые соединения |
| worker_connections | Максимальное число одновременных соединений для одного рабочего процесса |
| multi_accept | Если установлено on, рабочий процесс принимает все новые соединения сразу, а не по одному |
| use | Определяет метод обработки соединений (обычно выбирается автоматически) |
| http | Основной блок, который задает параметры HTTP-сервера |
| sendfile | Включает или отключает использование метода быстрой передачи файлов sendfile() |
| tcp_nopush | Заставляет сервер отправлять заголовки HTTP-ответов одним пакетом, повышая производительность |
| tcp_nodelay | Позволяет не буферизировать данные и отправлять их короткими очередями |
| keepalive_timeout | Время ожидания неактивного соединения перед его закрытием |
| keepalive_requests | Максимальное число запросов, которое может быть выполнено в одном keep-alive соединении |
| error_log | Путь к файлу журнала ошибок. Директиву можно указывать в разных секциях (http, server и других) |
| gzip | Включает сжатие контента для ускорения загрузки страниц |
Эти параметры можно менять в зависимости от задач и нагрузки на сервер. Важно сохранять структуру и синтаксис директив, иначе при перезапуске Nginx возникнут ошибки. После внесения изменений не забудьте проверить конфигурацию на корректность:
Если система сообщит, что тест пройден успешно, перезапустите сервер командой:
Таким образом, вы сможете адаптировать работу Nginx под конкретные требования проекта, обеспечив стабильность и производительность веб-сервера.
Настройка блоков server
Чтобы сервер Nginx корректно обслуживал разные сайты или домены, необходимо настроить блоки server — они аналогичны виртуальным хостам в Apache. Каждый блок отвечает за один сайт и содержит его конфигурацию: доменное имя, корневую директорию, настройки безопасности и логи. Это позволяет размещать несколько сайтов на одном сервере, при этом у каждого будут свои отдельные файлы и параметры.
По умолчанию Nginx в Ubuntu настроен на обслуживание контента из директории /var/www/html. Этот вариант подходит для одного сайта, но если нужно разместить несколько, лучше создать отдельную структуру каталогов.
Создайте папку для вашего сайта (вместо myproject.ru укажите свой домен):
Назначьте владельцем созданной директории текущего пользователя:
Установите корректные права доступа, чтобы владелец мог читать, записывать и выполнять файлы, а остальные пользователи — только читать и выполнять:
Теперь создайте тестовую страницу, чтобы проверить работу блока:
Вставьте пример содержимого:
<head>
<meta charset="UTF-8">
<title>Добро пожаловать на myproject.ru!</title>
</head>
<body>
<h1>Сайт myproject.ru успешно работает!</h1>
<p>Поздравляем! Ваш блок server Nginx настроен и доступен.</p>
</body>
</html>
Сохраните изменения и закройте редактор.
Далее нужно создать сам конфигурационный файл блока server, который будет описывать, как Nginx должен обрабатывать запросы к этому домену. Создайте новый файл:
И добавьте туда следующее содержимое:
listen 80;
listen [::]:80;
index index.html index.htm;
try_files $uri $uri/ =404;
}
}
В этом примере директива root указывает путь к корневой директории сайта, а server_name — доменное имя, на которое сервер будет реагировать.
Чтобы активировать этот блок, создайте символическую ссылку в каталоге sites-enabled, из которого Nginx читает конфигурации при запуске:
Использование символических ссылок удобно тем, что вы можете временно отключить сайт, удалив ссылку, но не трогая сам файл конфигурации.
После добавления нового блока откройте главный конфигурационный файл Nginx:
Найдите строку # server_names_hash_bucket_size и удалите символ #, чтобы раскомментировать ее:
Эта настройка предотвращает возможные ошибки с памятью при использовании длинных имен доменов.
Когда все изменения внесены, проверьте конфигурацию на наличие ошибок:
Если результат проверки сообщает, что «syntax is ok» и «test is successful», перезапустите сервер, чтобы применить настройки:
Теперь Nginx будет обслуживать ваш домен your_domain, а также по умолчанию — сайт из /var/www/html, если запрос не совпадает ни с одним другим блоком.
Проверка работы
После того как вы создали и активировали серверный блок, стоит убедиться, что Nginx действительно обслуживает ваш сайт правильно.
Для начала проверьте, что сам веб-сервер работает и запущен:
Если в выводе появится строка Active: active (running), значит Nginx работает.
Теперь нужно убедиться, что созданный серверный блок корректно подключен. Выполните команду:
Она проверит конфигурацию на наличие ошибок. Если все в порядке, вы увидите сообщение:
nginx: configuration file test is successful
После этого перезапустите сервер, чтобы применить изменения:
Теперь можно проверить работу сайта через браузер. Откройте в адресной строке IP-адрес сервера или ваш домен (например, http://myproject.ru). Если все сделано правильно, вы увидите вашу тестовую страницу — ту самую с заголовком:
Сайт myproject.ru успешно работает!
Типичные ошибки Nginx
При работе с Nginx иногда возникают ошибки, которые мешают корректной работе сайта или приложения. Большинство из них связаны с неправильной настройкой серверных блоков, прав доступа или сбоем вспомогательных служб (например, PHP-FPM). Чтобы понять причину проблемы, первым делом проверьте статус сервиса:
Если Nginx не запущен — перезапустите его. После этого загляните в журналы ошибок:
Анализ логов — лучший способ диагностировать неисправности.
Какие есть наиболее распространенные ошибки:
403 Forbidden
Ошибка 403 Forbidden указывает на то, что доступ к запрошенному ресурсу запрещен. Чаще всего причина — неверные права на файлы или каталоги, попытка доступа к защищенной директории либо ограничение, заданное в конфигурации Nginx.
Как исправить: убедитесь, что у веб-сервера есть права на чтение нужных файлов и что в настройках не используется директива deny all; без необходимости.
404 Not Found
Ошибка 404 Not Found означает, что запрашиваемый файл или страница отсутствуют на сервере. Это может произойти, если путь к файлам в директиве root указан неверно, файл был удален или неправильно настроен блок location.
Как исправить: проверьте, что указанный путь совпадает с фактическим расположением файлов сайта, и при необходимости настройте пользовательскую страницу ошибки через директиву error_page 404 /404.html;.
413 Request Entity Too Large
Ошибка появляется, когда клиент пытается загрузить файл, превышающий допустимый размер, установленный на сервере.
Как исправить: увеличьте лимит загрузки, добавив в конфигурацию Nginx директиву client_max_body_size с нужным значением, например:
После сохранения изменений перезапустите сервер, чтобы новые параметры вступили в силу.
502 Bad Gateway
Ошибка 502 Bad Gateway означает, что Nginx не получил ответ от сервиса, на который перенаправляет запрос — чаще всего от php-fpm. Такое случается, если php-fpm не запущен, указан неверный путь к сокету в директиве fastcgi_pass или процесс не справляется с нагрузкой.
Как исправить: проверьте, запущен ли php-fpm, убедитесь в правильности его адреса в конфигурации и при необходимости увеличьте количество рабочих процессов или оптимизируйте обработку запросов.
503 Service Unavailable
Ошибка 503 Service Unavailable возникает, когда сервер временно не может обработать запрос. Чаще всего это связано с перегрузкой, техническими работами или остановкой службы, например php-fpm.
Как исправить: убедитесь, что все нужные сервисы запущены, перезапустите Nginx и проверьте логи — если перегрузка повторяется, стоит оптимизировать настройки или настроить балансировку нагрузки.
504 Gateway Time-out
Эта ошибка означает, что Nginx не получил ответ от внутреннего сервиса (например, php-fpm) за установленное время ожидания. Часто это происходит из-за медленной работы скрипта или недостаточных ресурсов.
Как исправить: увеличьте время ожидания с помощью директивы fastcgi_read_timeout в конфигурации Nginx или оптимизируйте работу приложения, чтобы оно отвечало быстрее.
Основные команды для работы с сервером Nginx
Чтобы эффективно управлять Nginx, важно знать основные команды, которые позволяют запускать, останавливать, перезапускать сервер и проверять его состояние. Все действия выполняются через терминал, обычно с правами администратора.
| Команда | Назначение |
| sudo systemctl start nginx | Запускает веб-сервер Nginx |
| sudo systemctl stop nginx | Останавливает работу Nginx |
| sudo systemctl restart nginx | Перезапускает Nginx |
| sudo systemctl reload nginx | Перезагружает конфигурацию без остановки сервиса |
| sudo systemctl enable nginx | Добавляет Nginx в автозагрузку — сервер будет запускаться автоматически при включении системы |
| sudo systemctl disable nginx | Убирает Nginx из автозагрузки, чтобы он не запускался при старте ОС |
| sudo systemctl status nginx | Показывает текущее состояние сервиса: активен ли он, работает ли корректно, есть ли ошибки |
| sudo nginx -t | Проверяет конфигурационные файлы на наличие ошибок |
| sudo nginx -v | Отображает текущую версию установленного Nginx |
| sudo nginx -V | Показывает расширенную информацию о сборке сервера, включая модули и пути к конфигурациям |