Nginx: установка и настройка на Ubuntu 22.04 и 24.04
Nginx устанавливается на Ubuntu одной командой и начинает работать сразу после этого. Весь процесс — от чистого сервера до работающего сайта — занимает около десяти минут. Ниже разберём установку, настройку файрвола, создание виртуального хоста и основные команды для повседневной работы.
Установка Nginx
Перед установкой обновите список пакетов — так вы получите актуальную версию из репозитория Ubuntu:
sudo apt update
Установите Nginx:
sudo apt install nginx -y
После завершения Nginx запустится автоматически. Проверьте, что сервис работает:
sudo systemctl status nginx
В выводе должна быть строка Active: active (running). Если она есть — Nginx поднят и слушает порт 80. Откройте IP-адрес сервера в браузере: если всё в порядке, увидите стандартную страницу «Welcome to nginx!».
Настройка файрвола
Если на сервере включён UFW, по умолчанию он блокирует внешние соединения. Nginx при установке регистрирует три профиля:
| Профиль | Порты | Когда использовать |
|---|---|---|
| Nginx HTTP | 80 | Только HTTP, без HTTPS |
| Nginx HTTPS | 443 | Только HTTPS |
| Nginx Full | 80 и 443 | Сайты с SSL-сертификатом |
Для большинства сайтов подходит Nginx Full — он открывает сразу оба порта:
sudo ufw allow 'Nginx Full'
Проверьте, что правило применилось:
sudo ufw status
Файловая структура
Прежде чем менять конфигурацию, полезно понять, где что находится.
Главный файл настроек — /etc/nginx/nginx.conf. Он управляет глобальными параметрами: числом рабочих процессов, максимальным размером загружаемых файлов, путями к логам.
Конфиги отдельных сайтов хранятся в двух папках:
/etc/nginx/sites-available/— все конфиги, в том числе неактивные/etc/nginx/sites-enabled/— символические ссылки на активные конфиги
Такое разделение удобно на практике: чтобы временно отключить сайт, достаточно удалить симлинк из sites-enabled, не трогая сам конфиг.
Логи Nginx по умолчанию пишутся в /var/log/nginx/. Файл access.log фиксирует все входящие запросы, error.log — ошибки сервера.
По умолчанию Nginx раздаёт файлы из /var/www/html/ — там лежит стандартная страница приветствия.
Создание виртуального хоста
Если вы хотите разместить сайт на своём домене, для него нужен отдельный конфигурационный блок — виртуальный хост. В примере используем домен example.com, замените его на свой.
- Создайте папку для файлов сайта:
sudo mkdir -p /var/www/example.com/html
- Выдайте права текущему пользователю:
sudo chown -R $USER:$USER /var/www/example.com/html
- Создайте тестовую страницу:
echo '<h1>Сайт работает</h1>' | sudo tee /var/www/example.com/html/index.html
- Создайте конфигурационный файл для сайта:
sudo nano /etc/nginx/sites-available/example.com
- Вставьте следующее содержимое:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Несколько пояснений по конфигу:
listen [::]:80— включает поддержку IPv6. Если ваш VPS не поддерживает IPv6, эту строку можно убрать.server_name— домены, на которые будет откликаться этот блок.try_files $uri $uri/ =404— Nginx сначала ищет файл по запрошенному пути, потом директорию, и если ничего не нашёл — возвращает 404.
- Активируйте конфиг, создав символическую ссылку:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
- Проверьте конфигурацию на синтаксические ошибки:
sudo nginx -t
Если вывод содержит syntax is ok и test is successful — можно применять. Перезагрузите Nginx:
sudo systemctl reload nginx
Сайт станет доступен по домену, как только DNS запись A для example.com начнёт указывать на IP вашего сервера.
Если планируете использовать HTTPS, следующий шаг — установка SSL-сертификата. Бесплатно это можно сделать через Let’s Encrypt.
Основные команды
| Команда | Что делает |
|---|---|
sudo nginx -t |
Проверяет конфигурацию на ошибки без перезапуска |
sudo systemctl reload nginx |
Применяет изменения конфига без разрыва соединений |
sudo systemctl restart nginx |
Полный перезапуск — прерывает активные соединения |
sudo systemctl stop nginx |
Останавливает сервер |
sudo systemctl start nginx |
Запускает сервер |
sudo systemctl enable nginx |
Включает автозапуск при загрузке системы |
В большинстве случаев используйте reload, а не restart — он применяет новый конфиг плавно, не обрывая текущие соединения. restart нужен только если Nginx завис или не реагирует на reload.
Диагностика
Большинство проблем видны в логах. Смотрите ошибки в реальном времени:
sudo tail -f /var/log/nginx/error.log
Если сайт не открывается, а systemctl status nginx показывает active (running) — скорее всего, проблема в DNS или файрволе. Убедитесь, что домен указывает на правильный IP, и что нужные порты открыты.
Перед каждым reload или restart запускайте nginx -t. Nginx откажется перезапуститься если в конфиге есть синтаксические ошибки — и это хорошо: так вы не уроните рабочий сервер из-за опечатки.
Часто задаваемые вопросы
Как проверить версию Nginx?
Выполните команду nginx -v — она выведет установленную версию. Для более подробной информации включая модули компиляции используйте nginx -V.
В чём разница между reload и restart?
reload отправляет Nginx сигнал плавной перезагрузки: мастер-процесс читает новый конфиг и постепенно заменяет рабочие процессы, не обрывая активные соединения. restart полностью останавливает Nginx и запускает заново — все текущие соединения прерываются. Для применения изменений конфига всегда используйте reload.
Можно ли разместить несколько сайтов на одном сервере?
Да. Для каждого сайта создайте отдельный файл в /etc/nginx/sites-available/ с нужным server_name, затем активируйте его через симлинк в sites-enabled. Nginx будет направлять трафик на нужный сайт по имени домена в HTTP-заголовке Host.
Почему Nginx не запускается после изменения конфига?
Скорее всего, в конфиге синтаксическая ошибка. Запустите sudo nginx -t — команда покажет в какой строке проблема. Исправьте ошибку и повторите проверку перед перезапуском.
Где хранятся логи Nginx?
По умолчанию в /var/log/nginx/. Файл access.log содержит все входящие запросы, error.log — ошибки. Путь можно изменить в конфиге директивой access_log и error_log.
Для Nginx нужен сервер с постоянным IP и стабильным соединением. На UFO.Hosting можно арендовать VPS с Ubuntu уже через несколько минут после оплаты — выберите нужную локацию и конфигурацию в личном кабинете.
Официальная документация Nginx: nginx.org/en/docs
Похожее
Все статьи
Fail2ban: защита VPS от брутфорса на Ubuntu
Fail2ban следит за логами сервера и временно блокирует IP-адреса, с которых идут неудачные попытки входа. Установка занимает одну команду, базовая защита SSH работает сразу после запуска без дополнительной настройки. Если в логах auth.log вы видите сотни попыток входа с разных…
Apache OFBiz: мощный и требовательный ERP-гигант
Если ваш бизнес — это сложный механизм с уникальными процессами, вы наверняка знаете, как трудно найти готовую программу, которая поможет все упорядочить и ничего не сломает по пути. Кто-то годами мирится с неудобной системой, кто-то платит за бесконечные доработки. Apache…