Как установить nginx на Ubuntu 24.04: настройка сайта Перейти к содержимому
+7 (920) 556-26-91 пн–пт: 10:00–19:00 (МСК)
Проконсультироваться Обсудить задачу

Инструкции

Как установить nginx на Ubuntu 24.04 и настроить сайт

Установка nginx на Ubuntu 24.04, структура конфигурации, создание сайта, проверка через nginx -t и разбор типичных ошибок.

Как установить nginx на Ubuntu 24.04 и настроить сайт

Короткий ответ: nginx ставится одной командой apt install nginx и сразу запускается как служба. Дальше настройка сводится к трём шагам: создать файл сайта в /etc/nginx/sites-available/, включить его символической ссылкой в sites-enabled/, проверить конфигурацию командой nginx -t и перезагрузить службу. Правки в конфигурацию вносятся только после успешной проверки — иначе nginx не перечитает файлы и останется на старой версии.

Этот материал — часть цикла про первичную настройку Ubuntu 24.04 на VPS. Если сервер только что создан, начинать стоит оттуда.

Установка

apt update
apt install -y nginx
systemctl enable --now nginx
systemctl status nginx --no-pager

В Ubuntu 24.04 из штатного репозитория приходит стабильная ветка. Если нужна более свежая версия, подключают официальный репозиторий nginx, но для большинства задач штатной сборки достаточно — она получает обновления безопасности.

Проверить, что сервер отвечает:

curl -I http://127.0.0.1

Ответ 200 OK означает, что nginx работает и отдаёт страницу-заглушку. Дальше её нужно заменить своим сайтом.

Как устроена конфигурация

Понимание структуры каталогов экономит больше времени, чем любая шпаргалка по директивам.

Путь Назначение
/etc/nginx/nginx.conf Главный файл: воркеры, логи, подключение каталогов конфигураций
/etc/nginx/sites-available/ Файлы сайтов. Здесь лежат все конфигурации, включая выключенные
/etc/nginx/sites-enabled/ Символические ссылки на включённые сайты
/etc/nginx/conf.d/ Дополнительные глобальные блоки, подключаются целиком
/etc/nginx/snippets/ Общие фрагменты, подключаемые директивой include
/var/log/nginx/ access.log и error.log

Разделение на sites-available и sites-enabled — это не формальность. Оно позволяет держать конфигурацию сайта на диске, но выключенной: достаточно удалить символическую ссылку, не трогая сам файл.

Создание сайта

Файл /etc/nginx/sites-available/example.com:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

Включение сайта и отключение заглушки по умолчанию:

mkdir -p /var/www/example.com
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx

Команда nginx -t разбирает всю конфигурацию и сообщает файл и строку с ошибкой. reload перечитывает конфигурацию без разрыва активных соединений, в отличие от restart. Именно reload и следует использовать в работе.

Типичные ошибки

  • Правка без проверки. Если nginx -t не запускали, а конфигурация содержит ошибку, reload завершится неудачей, и nginx продолжит работать со старой конфигурацией. Внешне это выглядит как «изменения не применились».
  • Забыли символическую ссылку. Файл в sites-available без ссылки в sites-enabled не читается вообще. Проверить: ls -l /etc/nginx/sites-enabled/.
  • Не указан server_name. Тогда сайт становится сервером по умолчанию и перехватывает запросы по всем доменам, для которых нет своей конфигурации.
  • Права на каталог. Если nginx не может прочитать root, ответ будет 403 Forbidden. Владельцем обычно делают пользователя www-data.
  • Порт занят. Ошибка Address already in use означает, что порт слушает другой процесс — часто это Apache. Проверить: ss -tlnp | grep :80.

Полезные команды

Команда Что делает
nginx -t Проверяет конфигурацию, ничего не меняя
nginx -T Выводит полную итоговую конфигурацию с учётом всех include
systemctl reload nginx Перечитывает конфигурацию без разрыва соединений
systemctl restart nginx Полный перезапуск, обрывает активные соединения
tail -f /var/log/nginx/error.log Показывает ошибки в реальном времени

Директива nginx -T особенно полезна, когда конфигурация разнесена по нескольким файлам и нужно понять, какая именно директива в итоге применилась.

Что делать дальше

  1. Закрыть лишние порты — это разобрано в материале про firewall на VPS.
  2. Выпустить сертификат — Let’s Encrypt через certbot.
  3. Если сайт на PHP, настроить связку с PHP-FPM — установка WordPress.
  4. Добавить кэширование статики и страниц, иначе каждый запрос будет уходить в приложение.