Установка и базовая настройка 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 для собственного домена.