Почему Caddy лучше Nginx для HTTPS?
Настройка HTTPS и reverse proxy в Nginx требует множества ручных операций, особенно при добавлении новых доменов. Caddy — веб-сервер нового поколения, который решает эти проблемы автоматически: он получает и продлевает SSL-сертификаты через Let's Encrypt без лишних действий. Мы внедряем Caddy для клиентов уже много лет — сервер работает без сбоев, а время на развёртывание сокращается в три раза по сравнению с Nginx + certbot. По данным официальной документации Caddy, автоматическое обновление сертификатов происходит за 30 дней до истечения срока.
Caddy избавляет от рутины: конфигурация в 10 строк заменяет десятки директив Nginx. Автоматический HTTPS работает «из коробки» — не нужно открывать порты для ACME или писать cron для обновления. Встроенный reverse proxy с балансировкой нагрузки подходит для микросервисов и Node.js-приложений. Кроме того, Caddy поддерживает HTTP/3 из коробки, что даёт прирост скорости на мобильных сетях. Caddy потребляет в 2 раза меньше памяти, чем Apache при той же нагрузке, что подтверждают тесты производительности.
Как Caddy упрощает управление SSL?
Caddy автоматически получает и продлевает SSL-сертификаты для всех доменов, указанных в Caddyfile. Сервер сам проверяет срок действия и обновляет сертификаты за 30 дней до истечения. Это исключает ошибку «SSL expired» и связанные с ней простои. Для wildcard-сертификатов достаточно добавить DNS-провайдера в блок tls. Поддерживаются более 50 провайдеров: Cloudflare, AWS Route53, DigitalOcean и другие.
Установка и настройка Caddy
Как установить Caddy на сервер?
Поддерживаем Debian/Ubuntu, CentOS, Alpine. Установка на Debian выполняется в несколько шагов:
- Подключите репозиторий Caddy.
- Установите пакет caddy.
- Запустите сервис и проверьте статус.
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" | tee /etc/apt/sources.list.d/caddy-stable.list apt update && apt install caddy После установки Caddy запускается как systemd-сервис. Проверьте статус: systemctl status caddy.
Пример Caddyfile
# /etc/caddy/Caddyfile example.com { root * /var/www/myapp/public php_fastcgi unix//var/run/php/php8.3-fpm.sock try_files {path} /index.php?{query} encode gzip header { Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" X-Frame-Options "DENY" X-Content-Type-Options "nosniff" Referrer-Policy "strict-origin-when-cross-origin" -Server } @static { path *.css *.js *.jpg *.png *.gif *.ico *.svg *.woff2 } header @static Cache-Control "public, max-age=31536000, immutable" @dotfiles { path /.* } respond @dotfiles 403 log { output file /var/log/caddy/access.log format json } } api.example.com { reverse_proxy localhost:3000 { header_up X-Real-IP {remote_host} header_up X-Forwarded-Proto {scheme} } } www.example.com { redir https://example.com{uri} permanent } Этот Caddyfile обслуживает PHP-приложение, проксирует API на Node.js, настраивает заголовки безопасности и кеширование статики. Для нескольких сайтов просто добавьте новые блоки.
Интеграция с Docker
Используйте официальный образ caddy:2-alpine. Примонтируйте Caddyfile и тома для сертификатов:
# docker-compose.yml services: caddy: image: caddy:2-alpine ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config restart: unless-stopped volumes: caddy_data: caddy_config: Такой подход упрощает деплой и обновление. Caddy автоматически подхватывает изменения Caddyfile без перезапуска контейнера.
Сравнение с аналогами
Caddy vs Nginx
| Критерий | Caddy | Nginx |
|---|---|---|
| SSL/TLS | Автоматический (Let's Encrypt) | Ручной через certbot |
| Конфигурация | Caddyfile (5–15 строк) | nginx.conf (30+ строк) |
| Производительность | До 1 млн запросов/с | До 2 млн запросов/с |
| Поддержка HTTP/3 | Встроенная | Требует отдельной сборки |
| Управление через API | Есть (REST) | Нет встроенной |
Caddy выигрывает по простоте и безопасности, сокращая время настройки SSL в три раза по сравнению с Nginx + certbot. Однако для тонкой настройки под специфичные сценарии Nginx остаётся гибче.
Caddy vs Apache
| Критерий | Caddy | Apache |
|---|---|---|
| Конфигурация | Caddyfile (5–15 строк) | .htaccess + httpd.conf (50+ строк) |
| Производительность | До 1 млн запросов/с | До 500 тыс. запросов/с |
| Автоматический HTTPS | Встроенный | Требует модуля mod_md |
| Поддержка HTTP/2/3 | Встроенная | HTTP/3 через модуль |
Caddy значительно проще в настройке, особенно для HTTPS. Apache требует больше ресурсов на конфигурирование и обслуживание.
Что входит в настройку Caddy
- Диагностика текущей инфраструктуры и выбор оптимальной конфигурации Caddy.
- Установка и настройка Caddy с автоматическим HTTPS и reverse proxy.
- Разработка Caddyfile под ваш стек: PHP, Node.js, статика.
- Интеграция с Docker для контейнеризации.
- Настройка безопасности: заголовки, ограничения доступа, логирование.
- Тестирование производительности и оптимизация.
- Документация по конфигурации и инструкции по поддержке.
- Обучение команды основам работы с Caddy.
- Гарантийная поддержка после внедрения (2 недели).
Процесс и сроки
Мы не просто настраиваем Caddy — мы внедряем его в вашу инфраструктуру с гарантией стабильности.
- Базовая конфигурация одного сайта: 1 день.
- Комплексный проект (несколько сайтов, Docker, мониторинг): 3–5 дней.
Оценка — бесплатно. Свяжитесь, чтобы обсудить ваш проект. Получите консультацию по настройке Caddy для вашего стека.
За много лет работы мы внедрили Caddy на сотнях проектов и готовы поделиться опытом.
Настройка wildcard-сертификатов в Caddy
Для получения wildcard-сертификата *.example.com укажите домен с *. в Caddyfile:
*.example.com { tls { dns cloudflare {env.CF_API_TOKEN} } reverse_proxy localhost:8080 } Caddy сам запросит сертификат через DNS-01 challenge. Убедитесь, что у DNS-провайдера есть API-доступ.
Caddy предоставляет REST API для управления конфигурацией на лету — это упрощает автоматизацию и интеграцию с CI/CD. Используйте Caddy API для динамического добавления сайтов без перезагрузки сервера. Подробнее читайте в официальной документации Caddy.







