VDS · Сайты и веб-серверы

Nginx: установка и первый сайт

Как поставить Nginx на Millida VDS, отдать первую страницу по своему адресу и не сломать конфигурацию опечаткой.

Обновлено 23 августа 2026 г.

Nginx — самый распространённый веб-сервер: он отдаёт статические файлы и проксирует запросы к приложениям. На любой ступени VDS он занимает десятки мегабайт памяти, так что подойдёт даже VDS-1.

Установка

Подключитесь к машине по SSH (команда есть на вкладке «Обзор» в панели /hosting/vds/<id>) и поставьте пакет.

apt update && apt install -y nginx      # Debian, Ubuntu
dnf install -y nginx && systemctl enable --now nginx   # AlmaLinux, CentOS Stream

Проверьте, что служба поднялась:

systemctl status nginx
curl -I http://127.0.0.1

Теперь откройте в браузере публичный адрес машины — он показан в «Обзоре». Должна появиться стартовая страница Nginx.

Первый сайт

Не правьте файл по умолчанию — заведите отдельный конфиг под каждый сайт. Так их проще включать и отключать.

mkdir -p /var/www/example.ru
echo '<h1>Работает</h1>' > /var/www/example.ru/index.html
chown -R www-data:www-data /var/www/example.ru
server {
    listen 80;
    server_name example.ru www.example.ru;
    root /var/www/example.ru;
    index index.html;

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

Сохраните это в /etc/nginx/sites-available/example.ru (в AlmaLinux — /etc/nginx/conf.d/example.ru.conf) и включите:

ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

nginx -t — обязательный шаг. Он проверяет синтаксис до перезагрузки; без него ошибка в скобках уронит все сайты сразу.

Домен и сертификат

Направьте A-запись домена на адрес машины из «Обзора». Пока запись не разошлась, сайт доступен только по IP. Обратная запись (PTR) настраивается на вкладке «Доступ», на работу сайта она не влияет — только на репутацию почты.

Дальше поставьте бесплатный сертификат: Let's Encrypt. Без него браузеры показывают «Не защищено».

Частые ошибки

СимптомПричинаЧто делать
403 ForbiddenНет прав на каталог или нет index.htmlchown -R www-data:www-data /var/www/..., проверьте index
502 Bad GatewayПриложение за прокси не запущеноsystemctl status вашего сервиса, см. обратный прокси
Открывается чужой сайтЗапрос не совпал ни с одним server_name и попал в первый блокЯвно задайте server_name, уберите default_server у лишнего конфига
Порт 80 занятУже стоит ApacheСнимите его: systemctl disable --now apache2

Логи смотрите в /var/log/nginx/error.log — там причина почти любого пятисотого ответа.

Перезапускайте Nginx через systemctl reload, а не restart: reload подхватывает конфигурацию без разрыва открытых соединений.