Установка и базовая настройка Nginx в Ubuntu

Пошаговая установка Nginx в Ubuntu, проверка службы, открытие HTTP-доступа и базовая диагностика веб-сервера.

Nginx — веб-сервер и reverse proxy, который часто используют для публикации сайтов, API и внутренних сервисов.

В этой инструкции рассматривается только установка Nginx в Ubuntu, проверка службы, доступ по HTTP и базовая диагностика. Настройка отдельных доменов, HTTPS и reverse proxy будет рассмотрена в самостоятельных статьях.

Проверено на: Ubuntu Server 24.04 LTS
Уровень сложности: начальный
Время выполнения: около 10 минут
Требуемый доступ: пользователь с правами sudo

Что будет настроено

После выполнения инструкции:

  • будет установлен Nginx;
  • служба будет включена в автозапуск;
  • будет проверен локальный HTTP-ответ;
  • при использовании UFW будет разрешён порт 80;
  • будет показано расположение основных файлов;
  • будет выполнена базовая проверка конфигурации и журналов.

Проверка системы

Проверьте версию Ubuntu:

cat /etc/os-release

Проверьте hostname:

hostnamectl

Проверьте текущие открытые TCP-порты:

sudo ss -lntp

Убедитесь, что порт 80 не занят другим веб-сервером.

Отдельная проверка:

sudo ss -lntp |
grep ':80'

Если команда ничего не вернула, порт свободен.

Обновление индекса пакетов

sudo apt update

Проверьте, что команда завершилась без ошибок репозиториев и DNS.

Установка Nginx

sudo apt install -y nginx

Проверьте установленную версию:

nginx -v

Показать расширенную информацию:

nginx -V

Команда nginx -V дополнительно выводит параметры сборки и подключённые модули.

Проверка службы

systemctl status nginx --no-pager

Ожидаемый статус:

active (running)

Краткая проверка:

systemctl is-active nginx

Ожидаемый результат:

active

Проверка автозапуска

systemctl is-enabled nginx

Ожидаемый результат:

enabled

Если служба не включена:

sudo systemctl enable nginx

Проверка прослушиваемого порта

sudo ss -lntp |
grep nginx

Обычно Nginx слушает:

0.0.0.0:80
[::]:80

Это означает, что сервер принимает HTTP-соединения по IPv4 и IPv6.

Проверка локального HTTP-ответа

curl -I http://127.0.0.1

Ожидаемый результат:

HTTP/1.1 200 OK
Server: nginx

Проверка содержимого страницы:

curl http://127.0.0.1

Должна вернуться стандартная HTML-страница Nginx.

Проверка по IP сервера

Узнайте IP-адрес:

ip -br addr

Откройте в браузере:

http://SERVER_IP

Вместо SERVER_IP укажите адрес сервера.

Проверка UFW

Проверьте состояние:

sudo ufw status verbose

Если UFW неактивен, изменять правила не требуется.

Если UFW активен, покажите профили приложений:

sudo ufw app list

Обычно доступны:

Nginx Full
Nginx HTTP
Nginx HTTPS

Разрешение HTTP через UFW

Для текущей статьи нужен только HTTP:

sudo ufw allow 'Nginx HTTP'

Проверьте:

sudo ufw status numbered

Ожидается разрешение TCP-порта 80.

Не используйте Nginx Full, если HTTPS ещё не настроен и порт 443 не требуется.

Проверка с другого компьютера

С другой машины:

curl -I http://SERVER_IP

Если ответа нет, проверьте:

  • UFW;
  • внешний firewall провайдера;
  • security group;
  • маршрутизацию;
  • NAT;
  • правильность IP;
  • доступность порта 80.

Основные каталоги Nginx

Конфигурация:

/etc/nginx/

Основной файл:

/etc/nginx/nginx.conf

Доступные сайты:

/etc/nginx/sites-available/

Включённые сайты:

/etc/nginx/sites-enabled/

Стандартная веб-директория:

/var/www/html/

Журналы:

/var/log/nginx/

Просмотр основной конфигурации

sudo nginx -T

Команда выводит итоговую конфигурацию со всеми подключёнными файлами.

Для просмотра только основного файла:

sudo sed -n '1,240p' /etc/nginx/nginx.conf

Проверка конфигурации

Перед каждым reload выполняйте:

sudo nginx -t

Успешный результат:

syntax is ok
test is successful

Если есть ошибка, Nginx укажет файл и номер строки.

Перезагрузка конфигурации без остановки

После успешного nginx -t:

sudo systemctl reload nginx

Проверьте:

systemctl status nginx --no-pager

reload перечитывает конфигурацию без полноценной остановки веб-сервера.

Полный перезапуск

sudo systemctl restart nginx

Полный restart требуется реже. Для обычного изменения конфигурации предпочтительнее:

sudo nginx -t &&
sudo systemctl reload nginx

Остановка и запуск

Остановить:

sudo systemctl stop nginx

Запустить:

sudo systemctl start nginx

Проверить:

systemctl is-active nginx

Стандартная конфигурация сайта

Проверьте файл:

sudo cat /etc/nginx/sites-available/default

Проверьте символическую ссылку:

ls -l /etc/nginx/sites-enabled/

Обычно:

default -> /etc/nginx/sites-available/default

Этот сайт обслуживает стандартную страницу Nginx.

Создание отдельного виртуального хоста для домена рассматривается в следующей статье.

Стандартная веб-страница

Проверьте содержимое:

ls -la /var/www/html/

Обычно там находится:

index.nginx-debian.html

Проверьте:

sudo head -40 /var/www/html/index.nginx-debian.html

Создание простой тестовой страницы

Создайте резервную копию стандартного файла:

sudo cp   /var/www/html/index.nginx-debian.html   /var/www/html/index.nginx-debian.html.backup

Создайте простой index.html:

sudo tee /var/www/html/index.html >/dev/null <<'EOF'
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>Nginx работает</title>
</head>
<body>
    <h1>Nginx работает</h1>
    <p>Веб-сервер успешно установлен и запущен.</p>
</body>
</html>
EOF

Проверьте:

curl http://127.0.0.1

Если продолжает отображаться старая страница, проверьте директиву index в конфигурации сайта.

Права на веб-каталог

Проверьте:

ls -ld /var/www/html
ls -l /var/www/html

Для статических файлов обычно достаточно владельца root и прав на чтение для Nginx.

Пример:

drwxr-xr-x
-rw-r--r--

Не назначайте каталогам и файлам права 777.

Пользователь Nginx

Проверьте процессы:

ps aux |
grep '[n]ginx'

Обычно:

  • master process работает от root;
  • worker processes работают от www-data.

Проверить директиву:

grep '^user' /etc/nginx/nginx.conf

Журнал доступа

sudo tail -50 /var/log/nginx/access.log

Создайте запрос:

curl http://127.0.0.1 >/dev/null

Повторно:

sudo tail -5 /var/log/nginx/access.log

В журнале появится новая запись.

Журнал ошибок

sudo tail -50 /var/log/nginx/error.log

Наблюдение в реальном времени:

sudo tail -f /var/log/nginx/error.log

Остановить:

Ctrl+C

Журнал systemd

sudo journalctl -u nginx   -n 100   --no-pager

Только текущая загрузка:

sudo journalctl -u nginx   -b   --no-pager

Проверка процессов

ps -C nginx -o pid,ppid,user,cmd

Проверка master process:

cat /run/nginx.pid

Проверка конкретного PID:

ps -fp "$(cat /run/nginx.pid)"

Проверка потребления ресурсов

systemctl status nginx --no-pager
ps -C nginx -o pid,%cpu,%mem,rss,cmd

Для стандартной статической страницы нагрузка должна быть минимальной.

Типичные проблемы

Служба не запускается

Проверьте конфигурацию:

sudo nginx -t

Проверьте журнал:

sudo journalctl -u nginx   -n 100   --no-pager

Порт 80 уже занят

sudo ss -lntp |
grep ':80'

Определите процесс и решите, какой веб-сервер должен использовать порт.

Не завершайте неизвестный процесс без проверки.

Страница доступна локально, но не открывается извне

Проверьте:

sudo ufw status verbose

Также проверьте firewall провайдера, NAT и маршрутизацию.

Возвращается 403 Forbidden

Проверьте:

  • наличие index-файла;
  • права на каталог;
  • права на файл;
  • директиву root;
  • журнал ошибок.

Команды:

ls -ld /var/www/html
ls -l /var/www/html
sudo tail -50 /var/log/nginx/error.log

Возвращается 404 Not Found

Проверьте запрашиваемый URI и директиву:

root

Проверьте итоговую конфигурацию:

sudo nginx -T

nginx -t показывает ошибку

Исправьте указанный файл и строку.

До успешной проверки не выполняйте reload.

После изменения отображается старая страница

Проверьте:

  • какой файл используется как index;
  • кэш браузера;
  • правильный IP;
  • правильный server block;
  • итоговую конфигурацию.

Проверка без браузера:

curl -v http://127.0.0.1

Удаление тестовой страницы

Восстановите стандартный файл при необходимости:

sudo rm -f /var/www/html/index.html

Проверьте:

curl http://127.0.0.1

Удаление Nginx

Остановите службу:

sudo systemctl stop nginx

Удалите пакет:

sudo apt remove -y nginx nginx-common

Удаление вместе с конфигурацией:

sudo apt purge -y nginx nginx-common

Удалите неиспользуемые зависимости:

sudo apt autoremove

Не удаляйте /var/www и /etc/nginx вручную, если там находятся нужные сайты или резервные копии.

Быстрый набор команд

Установка:

sudo apt update
sudo apt install -y nginx

Проверка:

systemctl status nginx --no-pager
sudo nginx -t

HTTP-тест:

curl -I http://127.0.0.1

Разрешение UFW:

sudo ufw allow 'Nginx HTTP'

Применение конфигурации:

sudo nginx -t &&
sudo systemctl reload nginx

Журналы:

sudo tail -50 /var/log/nginx/access.log
sudo tail -50 /var/log/nginx/error.log

Итог

После выполнения инструкции:

  • Nginx установлен;
  • служба запущена и включена в автозапуск;
  • проверен порт 80;
  • разрешён HTTP-доступ через UFW;
  • проверена стандартная страница;
  • рассмотрены основные каталоги;
  • проверены конфигурация и журналы.

На следующем этапе можно создать отдельный виртуальный хост Nginx для собственного домена.

← Предыдущая статья Подключение Proxmox Backup Server к Proxmox VE Следующая статья → Создание виртуального хоста Nginx для отдельного домена