Статический сайт: от файла до домена
Полный путь для лендинга или сборки 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 ГБ памяти сборка большого проекта может упасть по нехватке памяти.