Перейти к содержимому
VDS · Сайты и веб-серверы

Статический сайт: от файла до домена

Полный путь для лендинга или сборки React и Vue: залить файлы на VDS, отдать их веб-сервером, привязать домен и обновлять без простоя.

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

Статический сайт — это набор готовых файлов: HTML, CSS, картинки, сборка фронтенда. Ему не нужен ни PHP, ни база, поэтому он спокойно живёт даже на VDS-1 и выдерживает заметный трафик: полоса до 500 Мбит/с.

Куда класть файлы

Заведите отдельный каталог под каждый сайт:

mkdir -p /var/www/example.ru
chown -R www-data:www-data /var/www/example.ru

Загрузка с локальной машины — обычным scp или rsync:

scp -r ./dist/* root@ВАШ_АДРЕС:/var/www/example.ru/
rsync -avz --delete ./dist/ root@ВАШ_АДРЕС:/var/www/example.ru/

rsync --delete удаляет на сервере файлы, которых больше нет в сборке. Без него старые чанки JS копятся годами.

Отдача веб-сервером

Минимальный конфиг Nginx:

server {
    listen 80;
    server_name example.ru;
    root /var/www/example.ru;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~* \.(js|css|png|jpg|svg|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

Строка try_files ... /index.html нужна одностраничным приложениям на React, Vue и Svelte: без неё прямой переход по /about вернёт 404.

Дальше — сертификат Let's Encrypt и сайт открывается по HTTPS.

Домен

В панели домена создайте A-запись на публичный адрес машины (вкладка «Обзор» в /hosting/vds/m/<id>) и такую же для www. Проверьте:

dig +short example.ru

Записи расходятся до нескольких часов. Пока идёт ожидание, сайт доступен по адресу машины.

Обновление без простоя

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

rsync -avz ./dist/ /var/www/releases/$(date +%s)/
ln -sfn /var/www/releases/1724400000 /var/www/example.ru-current
systemctl reload nginx

root в конфиге при этом указывает на /var/www/example.ru-current.

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

СимптомПричина
Пустая страница, в консоли 404 на JSФайлы собраны с неверным base — проверьте настройки сборщика
Старая версия у части посетителейКеш браузера — используйте имена файлов с хешем
403 на всёКаталог не читается пользователем веб-сервера
Работает только главнаяНет try_files для одностраничного приложения

Сборку фронтенда лучше делать у себя и заливать готовый dist. На VDS-1 с 2 ГБ памяти сборка большого проекта может упасть по нехватке памяти.