Обзор продукта
Один сервер между сетью и вашим приложением.
Webship — это самоуправляемый Rust край и статический веб-сервер. Один среда выполнения завершает современные протоколы, применяет политику на краю, обслуживает файлы и проксирует запросы приложений.
Современный транспорт
Принимайте HTTP/1.1, HTTP/2 и HTTP/3, с TLS 1.3 и необязательной конечной точкой WebTransport.
Статическая и проксированная доставка
Обслуживайте статические файлы с валидаторами и заранее сжатыми сопутствующими контейнерами или направляйте трафик приложений через ограниченные пулы верхнего уровня.
Безопасные настройки по умолчанию
Начните с включенного WAF, контроля DDoS, проверки ботов, заголовков безопасности ответа, API Shield и защиты файлов с точками.
Наблюдаемые операции
Используйте аутентифицированную статистику, метрики Prometheus, идентификаторы запросов, плавные перезагрузки и необязательную панель управления MCP.
Быстрый старт
От бинарного релиза до работающего слушателя.
Запускайте на loopback, проверяйте всё перед привязкой и проверяйте встроенный ответ состояния до добавления публичного трафика.
Подготовьте файлы
Разместите бинарный файл релиза, его конфигурацию TOML, статический корень и любые настроенные файлы сертификата и ключа TLS на хосте.
Проверяйте и осматривайте
Выполните обе команды конфигурации. Исправьте первую ошибку и проверьте скрытый фактический результат перед запуском.
Запуск в приватном режиме
Запустите Webship с выбранным файлом TOML. Добавьте полный комплект сертификатов или автоматический TLS, когда сайт будет готов к безопасному открытому доступу.
Проверить время выполнения
Вызвать GET /health локально. Затем протестировать статические пути, TLS, прокси-маршруты, правила безопасности и аутентифицированный мониторинг.
listen = "127.0.0.1:4433"
workers = 4
root = "./public"/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/healthРуководство быстрого старта для AI-агентов
Подключите AI-агента к Webship в пять строк.
Подключите Claude Code, OpenAI, DeepSeek или любого совместимого клиента MCP через приватный SSH-туннель. Агент получает аутентифицированную поверхность операций без обмена публичным слушателем и без раскрытия учетных данных управления интернет-трафику.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }Статическая доставка
Обслуживайте каталог с настройками по умолчанию, которые учитывают протокол.
Установите root глобально или для каждого сайта. TLS-сайты по умолчанию используют только HTTP/3; сайты без шифрования по умолчанию используют HTTP/1.1 и H2C. Переопределяйте HTTP/1.1, HTTP/2 и HTTP/3 независимо для каждого сайта.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueВстроенный маршрутизатор поддерживает GET и HEAD, диапазоны байтов, условные запросы, валидаторы, а также сопутствующие файлы .br, .zst и .gz. Пути к файлам, начинающимся с точки, по умолчанию отклоняются; .well-known остается доступным.
Трафик приложения
Маршрутизируйте запросы к одному или нескольким upstream'ам.
Включите обратное проксирование, сопоставьте хост и путь, затем определите итоговую безусловную политику. Webship поддерживает ограниченные пулы, проверки состояния, балансировку нагрузки, прерыватели цепи, безопасные повторные попытки без тела, WebSockets и кэширование.
[reverse_proxy]
enabled = true
[[reverse_proxy.routes]]
domain = "app.example.com"
path_prefix = "/api"
strip_path_prefix = true
upstreams = ["127.0.0.1:8080", "127.0.0.1:8081"]
[[reverse_proxy.policies]]
name = "default"
hosts = []
path_prefixes = ["/"]
methods = []
max_body_bytes = 1048576
total_timeout_ms = 30000TLS и HTTP/3
Используйте ручные сертификаты или позвольте Webship управлять ими.
Webship принимает TLS 1.3. HTTP/3 работает через соответствующий UDP-слушатель; явно включите HTTP/1.1 или HTTP/2, когда TLS-сайт также требует совместимости с TCP.
listen = "0.0.0.0:443"
[automatic_tls]
enabled = true
directory_url = "https://acme-v02.api.letsencrypt.org/directory"
cache_dir = "/var/lib/webship/acme"
contacts = ["mailto:ops@example.com"]
accept_terms_of_service = true
[[sites]]
domain = "app.example.com"
root = "/srv/app"Политика на границе
Сохраняйте безопасный базовый уровень без изменений.
Webship включает свои основные уровни защиты по умолчанию. Настройте лимиты для вашей нагрузки и проверяйте после каждого изменения правила или политики заголовка.
[ddos]
enabled = true
mode = "normal"
requests_per_minute = 600
burst = 100
block_seconds = 300
[security.response_headers]
enabled = true
nosniff = true
frame_deny = true
referrer_no_referrer = true
hsts = "max-age=31536000; includeSubDomains"
content_security_policy = "default-src 'self'; frame-ancestors 'none'"Используйте обычный режим для обычного трафика, under_attack для более строгой обработки активных атак и lockdown, когда должны оставаться доступными только проверки и явно разрешенные пути.
Частная диагностика
Смотрите на край без раскрытия управляющей плоскости.
Статистика и метрики Prometheus работают на отдельном аутентифицированном слушателе. Инструментация должна быть включена, когда активен любой из этих конечных пунктов.
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"Безопасные операции
Перезагружайте сознательно. Держите откат под рукой.
Перезагрузка конфигурации
Отправьте SIGHUP после редактирования конфигурации, основанной на файле. Webship проверяет замену перед установкой и сохраняет текущую конфигурацию, если проверка не удается.
Обновление и откат
Установите новый бинарный файл рядом с предыдущей версией, проверьте конфигурацию в производственной среде с его помощью, затем проверьте работоспособность, TLS, проксирование и метрики. Сохраняйте предыдущий бинарный файл до прохождения всех проверок.
kill -HUP "$(pidof webship)"
/usr/local/bin/webship update --config /etc/webship/production.toml
sudo systemctl daemon-reload
sudo systemctl enable --now webship
sudo systemctl status webshipОптимизация на основе профилей
Собирайте целевые профили, родные для платформы, не смешивая обучение и продукцию.
Каждый Webship 1.1 целевой объект имеет отдельный инструментированный CLI для сбора данных профилирования LLVM, специфичных для целевой платформы, под вашим репрезентативным трафиком. Используйте точную версию и тройку цели, упражняйтесь на маршрутах и протоколах, которые имеют значение, и корректно завершайте процесс, чтобы он смог сбросить каждый файл .profraw.
Выберите точную целевую платформу
Скачайте PGO CLI для обучения, версия релиза и тройка целей Rust которого точно совпадает с временем выполнения, которое вы намерены оптимизировать. Сначала проверьте его опубликованный SHA-256.
Захватите репрезентативный трафик
Установите LLVM_PROFILE_FILE в директорию с правами на запись, запустите тренировочный CLI с проверенной копией реальной конфигурации, воспроизведите репрезентативный прямой и обратный прокси-трафик, затем корректно остановите Webship.
Объедините сырые профили
Используйте llvm-profdata из компиляции, созданной для релиза. Объедините каждый сгенерированный .profraw файл в один разреженный файл webship.profdata.
Пересборка и проверка
Применяйте объединённый профиль только к точному исходному коду, компилятору, криптопровайдеру, набору функций и цели, которые его сгенерировали. Проведите проверки правильности и производительности перед публикацией.
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.1.0-<target> --config ./webship.tomlNew-Item -ItemType Directory -Force ./profiles
$env:LLVM_PROFILE_FILE = "$PWD/profiles/webship-%p-%m.profraw"
.\webship-pgo-training-1.1.0-<target>.exe --config .\webship.tomlllvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdataСправка по командной строке
Малый интерфейс, явный запуск.
webship [OPTIONS] | webship update [OPTIONS]
-c, --config PATH- Выберите файл TOML. Если он не существует, Webship создаст его с приватным удостоверением TLS для localhost.
--check-config- Проверьте полную конфигурацию и завершите работу без запуска прослушивателей.
--print-effective-config- Вывести объединённую эффективную конфигурацию без секретов.
update- Проверить подписанный манифест сообщества, выбрать эту точную целевую платформу и установить более новую версию, если она существует.
--help / --version- Вывести помощь по команде или установленную версию Webship.
Общие режимы отказа
Начните с конфигурации, затем двигайтесь наружу.
- Запустите --check-config и исправьте первую выявленную ошибку; неизвестные поля TOML отклоняются.
- Подтвердите, что настроенные TCP и UDP порты доступны и разрешены брандмауэром.
- Подтвердите, что сертификат и ключ существуют, доступны для чтения учетной записи службы и образуют соответствующую пару.
- Для автоматического TLS убедитесь, что каждый настроенный домен разрешается в хост Webship.
- Вызовите /health на локальном слушателе приложения перед тестированием через DNS или внешнюю нагрузочную маршрутизацию.
- Временно включите аутентифицированную наблюдаемость, когда требуется доказательство во время выполнения.