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.html | chown -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 подхватывает конфигурацию без разрыва открытых соединений.