Статические сайты
WebShield может размещать статические сайты без отдельного origin-сервера: файлы хранятся в инфраструктуре WebShield и раздаются через тот же защитный слой, что и проксируемые сайты, — с CDN-кешированием, WAF и защитой от ботов.
Требования
Заголовок раздела «Требования»- Хостинг статических сайтов доступен на тарифе домена. Объем хранилища и максимальный размер файла зависят от тарифа.
- Сайт привязывается к апексу домена или к существующей записи
A,AAAA,CNAME. Для поддомена сначала создайте DNS-запись. - Для имени не должно быть включено проксирование. Один hostname — либо проксирование, либо статический сайт.
Создание сайта
Заголовок раздела «Создание сайта»- Откройте раздел Сайты.
- Нажмите Создать и выберите имя хоста из списка. Уже проксируемые и занятые имена отмечены и недоступны.
- Сайт создается в статусе Отключен — он не виден посетителям, пока вы не опубликуете его.
Загрузка файлов
Заголовок раздела «Загрузка файлов»Стартовой страницей служит index.html в корне сайта. Загрузить файлы можно несколькими способами:
- Перетаскивание — перетащите файлы или папки в зону загрузки. Структура подкаталогов сохраняется.
- Выбрать файлы / Выбрать папку — загрузка через диалог выбора. При выборе папки сохраняются относительные пути.
- В конкретную папку — кнопка загрузки на строке папки в списке файлов добавляет выбранные файлы именно в нее.
- ZIP-архив — загрузка архива полностью заменяет текущее содержимое сайта. Остальные способы работают в режиме слияния: новые файлы добавляются, совпадающие пути перезаписываются.
Работа с файлами
Заголовок раздела «Работа с файлами»Файлы отображаются деревом с подкаталогами. Для папок показывается суммарный размер содержимого.
- Скачивание: файл скачивается как есть; папка или весь сайт (кнопка ZIP в шапке списка) — ZIP-архивом.
- Просмотр: текстовые файлы (HTML, CSS, JS, JSON и другие, до 512 КБ) открываются в окне просмотра.
- Удаление: отметьте файлы и папки и нажмите Удалить выбранное. Папка удаляется вместе с содержимым. Удалить один элемент можно кнопкой в его строке.
- Обновление файла: загрузите файл по тому же пути — он перезапишет старый.
Публикация
Заголовок раздела «Публикация»Загруженные файлы попадают в черновик (рабочую область) — её показывает файловый менеджер. Посетители видят последнюю опубликованную версию, а не черновик.
Кнопка Опубликовать:
- Делает неизменяемый снимок черновика как новой версии (атомарно: посетители не увидят полуобновлённый сайт).
- Переключает DNS-запись хоста на инфраструктуру WebShield. Исходная запись сохраняется и будет восстановлена при отключении сайта.
- Выпускает TLS-сертификат (если включен HTTPS и домен делегирован).
- Делает новую версию доступной посетителям.
Отключить снимает сайт с публикации и восстанавливает исходную DNS-запись; файлы сохраняются. Удаление сайта удаляет файлы и полностью освобождает имя хоста.
Кеширование
Заголовок раздела «Кеширование»Контент кешируется на edge-узлах. Каждая публикация — это новая версия, поэтому кеш сбрасывается автоматически: после публикации посетители сразу получают новый контент, без ручной очистки. Если вы заменили файлы в черновике и хотите, чтобы их увидели посетители, нажмите Опубликовать.
Настройки
Заголовок раздела «Настройки»- Генератор сайта — выбор пресета (Hugo, Jekyll, Astro, Gatsby, Next.js export, SPA, обычный HTML). Пресет задаёт разумные значения остальных настроек; их можно поправить вручную.
- Чистые URL — как «красивые» адреса разрешаются в файлы под специфику генератора:
- Индекс каталога —
/about→/about/index.html(Hugo, Jekyll, Astro, Eleventy, Gatsby); - Расширение .html —
/about→/about.html, затем/about/index.html(Next.js export); - Только точный путь — без догадок.
- Индекс каталога —
- Страница 404 — документ для отсутствующих путей (например
404.html), отдаётся со статусом 404. Пусто — отдавать ответ origin как есть. - Режим SPA — отдавать
index.html(со статусом 200) для неизвестных путей. Включите для одностраничных приложений с client-side маршрутизацией. - Публиковать по HTTPS — выпустить сертификат и отдавать сайт по HTTPS с перенаправлением с HTTP.
- Защита от ботов —
Отключено,Проверка браузераилиПроверка капчей. Работает так же, как для проксируемых сайтов.
Изменения настроек опубликованного сайта применяются автоматически.
Публикация из CI (GitHub Actions)
Заголовок раздела «Публикация из CI (GitHub Actions)»Чтобы собирать и публиковать сайт автоматически, создайте токен публикации в карточке сайта (раздел «Токены публикации»). Токен действует только для этого сайта; полный токен показывается один раз — сохраните его в секреты репозитория.
Токен передаётся в заголовке Authorization: Bearer <токен>. Доступны загрузка архива и публикация:
name: Deploy siteon: push: branches: [main]jobs: deploy: runs-on: ubuntu-latest env: SITE_ID: "123" # id сайта (из URL карточки) WSP_TOKEN: ${{ secrets.WEBSHIELD_DEPLOY_TOKEN }} API: https://webshield.pro/api steps: - uses: actions/checkout@v4 - run: npm ci && npm run build # ваша сборка → ./dist - name: Pack run: cd dist && zip -r ../site.zip . && cd .. - name: Upload (полная замена содержимого) run: | curl -fsS -X POST "$API/static-sites/$SITE_ID/archive" \ -H "Authorization: Bearer $WSP_TOKEN" \ -F "archive=@site.zip" - name: Publish run: | curl -fsS -X POST "$API/static-sites/$SITE_ID/publish" \ -H "Authorization: Bearer $WSP_TOKEN"Токеном можно только загружать файлы и публиковать этот сайт — управлять сайтом, доменом или другими сайтами он не может. Отозвать токен можно в той же карточке.
Инкрементальная публикация (только изменения)
Заголовок раздела «Инкрементальная публикация (только изменения)»Для больших сайтов (тысячи файлов) полная загрузка архивом каждый раз медленна. Можно заливать только изменившиеся файлы: эндпоинт GET /static-sites/<id>/files возвращает список файлов с полем etag (MD5 содержимого). Сравните его с MD5 локальных файлов и:
- залейте новые/изменённые через
POST /static-sites/<id>/upload(поляfilesиpaths, дописывает в черновик, не заменяя весь сайт); - удалите исчезнувшие через
POST /static-sites/<id>/delete-files(JSON{"paths": [...]}); - опубликуйте:
POST /static-sites/<id>/publish.
Черновик сохраняется между публикациями, поэтому дозагружать нужно только дельту. Готовый скрипт без внешних зависимостей — tools/publish_static_site.py в репозитории WebShield:
WS_PUBLISH_TOKEN=<токен> python3 tools/publish_static_site.py \ --site-id 123 --dir ./dist --api-base https://webshield.proОграничения
Заголовок раздела «Ограничения»- Объем хранилища и максимальный размер одного файла ограничены тарифом.
- Запрещена загрузка исполняемых файлов и инсталляторов (
.exe,.msi,.apk,.batи подобных) — это защита от распространения вредоносного ПО через хостинг. - ZIP-архив: не более 5000 файлов; архивы с аномально высокой степенью сжатия отклоняются.