
Обратный прокси с приоритетом безопасности, созданный для защиты свободного интернета.
Обратный прокси, ориентированный на безопасность, созданный для защиты свободного веба.
Спокойная эксплуатация на периферии.
Документация • Песочница • Бенчмарки • Обсуждения • Участие
Zentinel — это высокопроизводительный обратный прокси, построенный на Cloudflare Pingora. Он обеспечивает явные ограничения, предсказуемое поведение и готовые к продакшену настройки по умолчанию для сред, где операторам нужно спокойно спать.
Производительность: Наименьшая задержка p99 в бенчмарках по сравнению с Envoy, HAProxy, Nginx и Caddy. Нагрузочные тесты на 1 млн запросов с успешностью 99,95% и без утечек памяти. WAF-движок на чистом Rust обрабатывает чистый трафик на скорости 912K запросов/с — в 30 раз быстрее эталонного ModSecurity на C++.
Готовое к продакшену ядро (прокси, маршрутизация, TLS, кэширование, балансировка нагрузки). Агенты версионируются отдельно — WAF, Auth и AI Gateway стабильны; остальные находятся в статусе beta или alpha. См. zentinelproxy.io/agents для статуса каждого агента.
┌────────┐ ┌──────────┐
│ Client │ │ Upstream │
└────┬───┘ └─────▲────┘
│ │
▼ │
╔═══════════ Zentinel (core, single binary) ══════════╤════╗
║ │ ║
║ Listener ─▶ Routing ─▶ Filter chain ─▶ Forward ────┘ ║
║ TLS, H2 priority rate-limit, LB, ║
║ + LRU cache, hooks retries ║
║ │ ║
╚══════════════════════════════╪═══════════════════════════╝
│ UDS / gRPC (v2 agent protocol)
▼
╔═══════ External agents (separate processes) ═══════╗
║ WAF · Auth · Rate-limit · … ║
║ crash-isolated, any language ║
╚════════════════════════════════════════════════════╝
Ответ проходит цепочку фильтров в обратном порядке до клиента. Логи доступа и метрики выводятся по завершении.
Dataplane работает как единый бинарный файл. Логика безопасности и политик, требующая интенсивного парсинга или операционно рискованная, вынесена в внешние агенты за UDS или gRPC, поэтому сбойный агент не может утянуть за собой прокси. См. Манифест для обоснования и crates/proxy/docs/architecture.md для деталей по каждой фазе.
# Install (binary only)
curl -fsSL https://get.zentinelproxy.io | sh
# Install and start as a systemd service (Linux, root or sudo)
curl -fsSL https://get.zentinelproxy.io | sh -s -- --enable-service
# Or via Cargo
cargo install zentinel-proxy
# Or via Docker
docker run -v $(pwd)/zentinel.kdl:/etc/zentinel/zentinel.kdl \
ghcr.io/zentinelproxy/zentinel --config /etc/zentinel/zentinel.kdl
На хостах с systemd установочный скрипт также создаёт /etc/systemd/system/zentinel.service, фрагмент sysusers и стартовый конфиг в /etc/zentinel/zentinel.kdl. Включение и запуск службы выполняются опционально через --enable-service. См. crates/proxy/docs/deployment.md.
Сохраните это как zentinel.kdl — он проксирует localhost:8080 на бэкенд на порту 8081:
system {
worker-threads 0 // auto-detect CPU cores
}
listeners {
listener "http" {
address "0.0.0.0:8080"
protocol "http"
}
}
routes {
route "default" {
matches {
path-prefix "/"
}
upstream "backend"
}
}
upstreams {
upstream "backend" {
target "127.0.0.1:8081"
}
}
# Run
zentinel --config zentinel.kdl
# Validate config without starting
zentinel test --config zentinel.kdl
Проксирование на HTTPS-бэкенд? Добавьте блок tls в upstream:
upstreams {
upstream "backend" {
target "api.example.com:443"
tls {
sni "api.example.com"
}
}
}
Без блока tls Zentinel подключается по обычному HTTP независимо от порта.
Больше примеров: config/examples/ охватывает API-шлюзы, балансировку нагрузки, WebSocket, кэширование, маршрутизацию инференса и многое другое. Или используйте конструктор конфигурации для интерактивной генерации конфига.
| Возможность | Описание |
|---|---|
| Типы сервисов | Web, API, Static, Builtin и Inference (LLM/AI) |
| Балансировка нагрузки | 14 алгоритмов: round-robin, weighted, least connections, Maglev, Peak EWMA и другие |
| Безопасность | TLS/mTLS, ограничение скорости, фильтрация GeoIP, WAF, защита от zip-бомб |
| Агентные протоколы | Встроенная поддержка MCP и A2A — разрешение/запрет по методам и инструментам, определяемое из тела JSON-RPC, а не из доверия к зеркалируемым заголовкам |
| Протокол агентов | Внешние агенты для WAF, аутентификации и пользовательской логики — изолированы от сбоев, на любом языке |
| HTTP-кэширование | Кэширование ответов на базе Pingora с предотвращением stampede и вытеснением LRU (память, диск или гибридные бэкенды) |
| Проксирование WebSocket | Соответствие RFC 6455 с пофреймовой инспекцией агентами и привязкой сессий |
| Наблюдаемость | Метрики Prometheus, структурированное логирование, трассировка OpenTelemetry |
| Горячая перезагрузка | Обновление конфигурации без простоя через SIGHUP с валидацией и атомарной заменой (маршруты, upstreams, агенты; изменения слушателей требуют перезапуска) |
Полный обзор возможностей на zentinelproxy.io/features.