Содержание
- Что такое 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.








