Top.Mail.Ru

Nginx: установка и настройка на Ubuntu 22.04 и 24.04

9
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, замените его на свой.

  1. Создайте папку для файлов сайта:
sudo mkdir -p /var/www/example.com/html
  1. Выдайте права текущему пользователю:
sudo chown -R $USER:$USER /var/www/example.com/html
  1. Создайте тестовую страницу:
echo '<h1>Сайт работает</h1>' | sudo tee /var/www/example.com/html/index.html
  1. Создайте конфигурационный файл для сайта:
sudo nano /etc/nginx/sites-available/example.com
  1. Вставьте следующее содержимое:
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.
  1. Активируйте конфиг, создав символическую ссылку:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  1. Проверьте конфигурацию на синтаксические ошибки:
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

Fail2ban: защита VPS от брутфорса на Ubuntu

Fail2ban следит за логами сервера и временно блокирует IP-адреса, с которых идут неудачные попытки входа. Установка занимает одну команду, базовая защита SSH работает сразу после запуска без дополнительной настройки. Если в логах auth.log вы видите сотни попыток входа с разных…

2151937262

Apache OFBiz: мощный и требовательный ERP-гигант

Если ваш бизнес — это сложный механизм с уникальными процессами, вы наверняка знаете, как трудно найти готовую программу, которая поможет все упорядочить и ничего не сломает по пути.  Кто-то годами мирится с неудобной системой, кто-то платит за бесконечные доработки. Apache…