Перейти к содержимому

Статические сайты

WebShield может размещать статические сайты без отдельного origin-сервера: файлы хранятся в инфраструктуре WebShield и раздаются через тот же защитный слой, что и проксируемые сайты, — с CDN-кешированием, WAF и защитой от ботов.

  • Хостинг статических сайтов доступен на тарифе домена. Объем хранилища и максимальный размер файла зависят от тарифа.
  • Сайт привязывается к апексу домена или к существующей записи A, AAAA, CNAME. Для поддомена сначала создайте DNS-запись.
  • Для имени не должно быть включено проксирование. Один hostname — либо проксирование, либо статический сайт.
  1. Откройте раздел Сайты.
  2. Нажмите Создать и выберите имя хоста из списка. Уже проксируемые и занятые имена отмечены и недоступны.
  3. Сайт создается в статусе Отключен — он не виден посетителям, пока вы не опубликуете его.

Стартовой страницей служит index.html в корне сайта. Загрузить файлы можно несколькими способами:

  • Перетаскивание — перетащите файлы или папки в зону загрузки. Структура подкаталогов сохраняется.
  • Выбрать файлы / Выбрать папку — загрузка через диалог выбора. При выборе папки сохраняются относительные пути.
  • В конкретную папку — кнопка загрузки на строке папки в списке файлов добавляет выбранные файлы именно в нее.
  • ZIP-архив — загрузка архива полностью заменяет текущее содержимое сайта. Остальные способы работают в режиме слияния: новые файлы добавляются, совпадающие пути перезаписываются.

Файлы отображаются деревом с подкаталогами. Для папок показывается суммарный размер содержимого.

  • Скачивание: файл скачивается как есть; папка или весь сайт (кнопка ZIP в шапке списка) — ZIP-архивом.
  • Просмотр: текстовые файлы (HTML, CSS, JS, JSON и другие, до 512 КБ) открываются в окне просмотра.
  • Удаление: отметьте файлы и папки и нажмите Удалить выбранное. Папка удаляется вместе с содержимым. Удалить один элемент можно кнопкой в его строке.
  • Обновление файла: загрузите файл по тому же пути — он перезапишет старый.

Загруженные файлы попадают в черновик (рабочую область) — её показывает файловый менеджер. Посетители видят последнюю опубликованную версию, а не черновик.

Кнопка Опубликовать:

  1. Делает неизменяемый снимок черновика как новой версии (атомарно: посетители не увидят полуобновлённый сайт).
  2. Переключает DNS-запись хоста на инфраструктуру WebShield. Исходная запись сохраняется и будет восстановлена при отключении сайта.
  3. Выпускает TLS-сертификат (если включен HTTPS и домен делегирован).
  4. Делает новую версию доступной посетителям.

Отключить снимает сайт с публикации и восстанавливает исходную 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.
  • Защита от ботовОтключено, Проверка браузера или Проверка капчей. Работает так же, как для проксируемых сайтов.

Изменения настроек опубликованного сайта применяются автоматически.

Чтобы собирать и публиковать сайт автоматически, создайте токен публикации в карточке сайта (раздел «Токены публикации»). Токен действует только для этого сайта; полный токен показывается один раз — сохраните его в секреты репозитория.

Токен передаётся в заголовке Authorization: Bearer <токен>. Доступны загрузка архива и публикация:

.github/workflows/deploy.yml
name: Deploy site
on:
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:

Terminal window
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 файлов; архивы с аномально высокой степенью сжатия отклоняются.