Содержание
- Что такое Caddy и зачем использовать его как обратный прокси?
- Базовая настройка Caddy для проксирования на несколько серверов
- Расширенная балансировка нагрузки с Caddy
- Автоматический HTTPS и TLS для распределенных систем
- Практические примеры конфигураций
- Сценарий 1: Проксирование по пути
- Сценарий 2: Геораспределение
- Часто задаваемые вопросы (FAQ)
- Как ограничить доступ к бэкендам?
- Можно ли использовать Caddy с Docker?
- Как настроить кеширование?
- Что делать при падении сервера?
Что такое Caddy и зачем использовать его как обратный прокси?
Caddy — современный веб-сервер с автоматическим HTTPS, известный простотой настройки и высокой производительностью. Как reverse proxy он перенаправляет клиентские запросы к нескольким бэкенд-серверам, обеспечивая:
- Централизованное управление трафиком
- Автоматическое шифрование через Let’s Encrypt
- Балансировку нагрузки между серверами
- Упрощение развертывания микросервисов
Базовая настройка Caddy для проксирования на несколько серверов
Конфигурация выполняется через Caddyfile
. Пример для двух бэкенд-серверов:
myapp.example.com { reverse_proxy { to backend1:8080 backend2:8080 lb_policy round_robin } }
- to: Список серверов (IP или домены с портами)
- lb_policy: Алгоритм балансировки (round_robin, first, random)
Расширенная балансировка нагрузки с Caddy
Caddy поддерживает продвинутые сценарии:
- Взвешенное распределение:
reverse_proxy backend1:80 backend2:80 { lb_try_duration 30s lb_try_interval 500ms }
- Health Checks для мониторинга серверов:
reverse_proxy /api/* { to node1:3000 node2:3000 health_path /status health_interval 10s }
Автоматический HTTPS и TLS для распределенных систем
Caddy автоматически генерирует сертификаты:
- Поддерживает wildcard-сертификаты для поддоменов
- Шифрование между прокси и бэкендами через
transport http
- Пример конфигурации с внутренним HTTPS:
reverse_proxy https://backend.local { transport http { tls_insecure_skip_verify } }
Практические примеры конфигураций
Сценарий 1: Проксирование по пути
api.example.com { route /v1/* { reverse_proxy 192.168.1.10:8000 } route /v2/* { reverse_proxy 192.168.1.20:9000 } }
Сценарий 2: Геораспределение
reverse_proxy { to eu-server.com us-server.com lb_policy first @eu condition {client_ip_country DE FR ES} handle @eu { reverse_proxy eu-server.com } }
Часто задаваемые вопросы (FAQ)
Как ограничить доступ к бэкендам?
Используйте basicauth
или IP-фильтрацию:
reverse_proxy /admin/* { to backend:8080 @blocked not remote_ip 192.168.0.0/24 respond @blocked 403 }
Можно ли использовать Caddy с Docker?
Да! Пример docker-compose.yml
:
services: caddy: image: caddy ports: ["80:80", "443:443"] volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data
Как настроить кеширование?
Добавьте директиву cache
:
reverse_proxy backend:8080 { cache { ttl 1h } }
Что делать при падении сервера?
Caddy автоматически исключает недоступные ноды. Настройте health_check
и резервные серверы через fail_timeout
.