Установить Nginx и отдать первую страницу без ошибок
За 10–15 минут вы установите Nginx 1.24.x на Ubuntu 24.04 LTS, создадите отдельный сайт и проверите его через браузер и curl. Разбираем ошибки, из-за которых новичок видит 403, 502 или страницу по умолчанию.

За 10–15 минут вы установите Nginx 1.24.x на Ubuntu 24.04 LTS, создадите отдельный сайт и откроете первую HTML-страницу по IP-адресу сервера. Инструкция рассчитана на чистый VPS с доступом по SSH и показывает не только рабочий путь, но и ошибки, из-за которых вместо страницы появляются 403 Forbidden, 502 Bad Gateway или стандартный экран Nginx.
Что подготовить до начала
Нужен сервер с Ubuntu Server 24.04 LTS, пользователем с правами sudo и открытым TCP-портом 80. Подключитесь к серверу по SSH. Домен для первой проверки не нужен: достаточно публичного IP-адреса.
- операционная система — Ubuntu 24.04 LTS;
- пакет — Nginx 1.24.x из репозитория Ubuntu;
- доступ — SSH и
sudo; - клиент для проверки — браузер или команда
curl; - папка сайта —
/var/www/first-site.
Если на сервере уже работает Apache или другой веб-сервер, сначала проверьте порт 80. Два процесса не смогут одновременно принимать HTTP-запросы на одном адресе и порту.
Первая проверка должна идти от простого к сложному: сначала локальный ответ Nginx, затем ответ по IP, и только потом домен, HTTPS и приложение.
Пошаговая установка
1. Обновите индекс пакетов и установите Nginx
Команда устанавливает пакет из стандартного репозитория Ubuntu. Обновление самого сервера здесь не требуется: оно может изменить больше компонентов, чем нужно для первой страницы.
sudo apt update
sudo apt install -y nginx
Проверьте, что сервис запущен и добавлен в автозагрузку:
sudo systemctl enable --now nginx
sudo systemctl status nginx --no-pager
Проверка шага: в выводе systemctl должна быть строка Active: active (running). Если сервис не стартовал, не переходите дальше — причина почти всегда указана в этом же выводе или в журнале journalctl -u nginx.
2. Создайте каталог и файл страницы
Nginx должен читать файлы из отдельного каталога сайта. Не редактируйте системный файл приветственной страницы: при обновлении пакета или смене конфигурации вы легко потеряете изменения.
sudo mkdir -p /var/www/first-site
sudo tee /var/www/first-site/index.html > /dev/null <<'HTML'
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Первая страница Nginx</title>
</head>
<body>
<h1>Nginx работает</h1>
<p>Эта страница отдана из /var/www/first-site.</p>
</body>
</html>
HTML
Проверьте файл локально на сервере:
test -f /var/www/first-site/index.html && echo "Файл создан"
sudo head -n 5 /var/www/first-site/index.html
Проверка шага: терминал выводит Файл создан, а затем первые строки HTML. Команда head нужна только для проверки содержимого, она не меняет файл.
3. Создайте конфигурацию сайта
В Ubuntu конфигурации виртуальных хостов хранятся в sites-available, а активными становятся после создания ссылки в sites-enabled. В конфигурации ниже Nginx будет отдавать статические файлы из созданной папки.
sudo tee /etc/nginx/sites-available/first-site > /dev/null <<'NGINX'
server {
listen 80;
listen [::]:80;
server_name _;
root /var/www/first-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
NGINX
server_name _; подходит для проверки по IP без домена. Когда появится домен, замените это значение на его имя и отдельно настройте DNS и HTTPS.
Активируйте конфигурацию и отключите стандартный сайт:
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo rm -f /etc/nginx/sites-enabled/default
Проверка шага: команда ls -l /etc/nginx/sites-enabled/first-site показывает символическую ссылку на файл из sites-available.
4. Проверьте конфигурацию перед перезапуском
Не перезапускайте Nginx вслепую. Сначала синтаксический тест покажет ошибку в скобках, пути к файлу или директиве.
sudo nginx -t
Проверка шага: в конце вывода должны быть строки syntax is ok и test is successful. Только после этого примените конфигурацию:
sudo systemctl reload nginx
Перезагрузка через reload применяет настройки без полного завершения процесса. Для статической страницы этого достаточно.
5. Проверьте страницу локально и по IP
Сначала отправьте запрос самому серверу. Так вы отделите ошибку Nginx от проблем DNS, облачного firewall или сетевых правил провайдера.
curl -I http://127.0.0.1
curl http://127.0.0.1
Проверка шага: первая команда должна вернуть HTTP-статус 200 OK, а вторая — HTML страницы. Теперь откройте в браузере http://IP_СЕРВЕРА. Если локальный запрос успешен, а браузер не подключается, ищите проблему вне конфигурации сайта.
6. Откройте HTTP-порт в firewall, если он включён
Проверьте состояние UFW — стандартного firewall Ubuntu:
sudo ufw status
Если firewall активен, разрешите профиль Nginx для HTTP:
sudo ufw allow 'Nginx HTTP'
sudo ufw status
Проверка шага: в списке правил появляется разрешение для HTTP. У облачного провайдера может быть отдельная группа сетевой безопасности: порт 80 нужно разрешить и там.
Частые ошибки новичков
Открывается стандартная страница Nginx
Это означает, что запрос попал в конфигурацию по умолчанию, а не в first-site. Обычно забывают создать ссылку в sites-enabled или не удаляют стандартный сайт.
ls -l /etc/nginx/sites-enabled
sudo nginx -T | grep -n "first-site"
В списке должна быть ссылка first-site, а команда nginx -T должна показать загруженный блок с вашим root. После исправления выполните sudo nginx -t && sudo systemctl reload nginx.
403 Forbidden вместо HTML
Чаще всего Nginx не может пройти по одному из каталогов или не находит индексный файл. Проверьте права доступа и имя файла:
namei -l /var/www/first-site/index.html
ls -l /var/www/first-site/index.html
Для обычной статической страницы каталогам нужен доступ на проход, а файлу — доступ на чтение для пользователя Nginx. Не выдавайте всему каталогу права 777: это маскирует причину и создаёт лишний риск. Сначала исправьте владельца и режим доступа в соответствии с политикой вашего сервера.
Ошибка «bind() ... address already in use»
Порт 80 уже занят другим процессом. Узнайте, кто его слушает:
sudo ss -ltnp | grep ':80'
Если это Apache, остановите его только после проверки, что он больше не нужен:
sudo systemctl stop apache2
sudo systemctl disable apache2
sudo systemctl restart nginx
Проверка: повторная команда sudo nginx -t проходит успешно, а curl -I http://127.0.0.1 возвращает ответ Nginx.
Страница не меняется после редактирования
Для статического HTML кеш обычно не мешает, но браузер может показывать старую копию. Проверьте содержимое с сервера через curl. Если там новый текст, обновите страницу без кеша или откройте её в приватном окне.
Локально работает, по IP — нет
В этом случае Nginx, скорее всего, уже исправен. Проверьте UFW, сетевые правила VPS и внешний firewall. Запрос к 127.0.0.1 не проходит через внешнюю сеть, поэтому он не показывает блокировку порта у провайдера.
Если Nginx всё ещё не запускается
Соберите три результата, не меняя настройки наугад:
- выполните
sudo nginx -tи сохраните полный текст ошибки; - посмотрите последние сообщения сервиса командой
sudo journalctl -u nginx -n 50 --no-pager; - проверьте занятые порты командой
sudo ss -ltnp.
Ошибка с номером строки обычно указывает на синтаксис конфигурации. Ошибка доступа указывает на права или путь. Ошибка привязки к порту указывает на другой сервис. Эти три случая требуют разных исправлений — удалять весь каталог /etc/nginx из-за одного сбоя не нужно.
Что делать дальше
После первой страницы добавьте домен в server_name, направьте DNS-запись на IP сервера и настройте HTTPS через проверенный ACME-клиент. До этого проверьте, что сайт отвечает с ожидаемым статусом, а конфигурация проходит nginx -t.
В продакшене смотрите не только на страницу в браузере: проверяйте журналы /var/log/nginx/access.log и /var/log/nginx/error.log, коды 4xx и 5xx, время ответа и заполнение диска. Проксирование к приложению, кеширование и настройка TLS — отдельные задачи; смешивать их с первой проверкой статики не стоит.
1 Виртуальный хост — отдельный блок конфигурации Nginx, который связывает имя или адрес запроса с конкретным каталогом сайта и правилами обработки.
Саммаризатор: 50 страниц или созвон — в 5 главных тезисов.
Спросить за 15 ₽Источники: Nginx Beginner’s Guide, Ubuntu Server: Install and configure Nginx
Частые вопросы
Можно ли выполнить инструкцию без домена?
Почему Nginx установлен, но браузер не открывает сайт?
Что делать, если я получил 403 Forbidden?
Нужно ли перезапускать Nginx после каждого изменения HTML?
Почему появляется стандартная страница Nginx?
Что делать, если порт 80 уже занят?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.