Чому Caddy кращий за Nginx для HTTPS?
Налаштування HTTPS і reverse proxy в Nginx вимагає безлічі ручних операцій, особливо при додаванні нових доменів. Caddy — веб-сервер нового покоління, який вирішує ці проблеми автоматично: він отримує та продовжує SSL-сертифікати через Let's Encrypt без зайвих дій. Ми маємо 10+ років досвіду в налаштуванні веб-серверів та 500+ успішних проєктів (5 років на ринку), і впроваджуємо Caddy для клієнтів уже багато років — сервер працює без збоїв, а час на розгортання скорочується втричі порівняно з Nginx + certbot. За нашими даними, Caddy втричі швидше налаштовує SSL, ніж Nginx + certbot, що підтверджує його ефективність. За даними офіційної документації Caddy, автоматичне оновлення сертифікатів відбувається за 30 днів до закінчення терміну.
Caddy позбавляє рутини: конфігурація в 10 рядків замінює десятки директив Nginx. Автоматичний HTTPS працює «з коробки» — не потрібно відкривати порти для ACME чи писати cron для оновлення. Вбудований reverse proxy з балансуванням навантаження підходить для мікросервісів та Node.js-додатків. Крім того, Caddy підтримує HTTP/3 (QUIC) з коробки, що дає приріст швидкості на мобільних мережах. Caddy споживає в 2 рази менше пам'яті, ніж Apache при тому ж навантаженні, що підтверджують тести продуктивності. Використання TLS 1.3 та OCSP stapling забезпечує додаткову безпеку.
Як Caddy спрощує керування SSL?
Caddy автоматично отримує та продовжує SSL-сертифікати для всіх доменів, вказаних у Caddyfile. Сервер сам перевіряє термін дії та оновлює сертифікати за 30 днів до закінчення за протоколом ACME. Це виключає помилку «SSL expired» та пов'язані з нею простої. Для wildcard-сертифікатів достатньо додати DNS-провайдера в блок tls (DNS-01 challenge). Підтримуються понад 50 провайдерів: Cloudflare, AWS Route53, DigitalOcean та інші.
Як налаштувати Caddy: покрокова інструкція
- Встановіть Caddy на сервер (Debian/Ubuntu, CentOS, Alpine). Наприклад, на Debian: підключіть репозиторій, встановіть пакет, запустіть сервіс.
- Створіть Caddyfile з правилами для вашого проєкту: коренева директорія, бекенд (PHP, Node.js), заголовки, HTTPS.
- Запустіть Caddy та перевірте статус systemd. Сервер автоматично отримає SSL-сертифікати.
- Протестуйте доступність сайту через HTTPS та роботу проксі.
Встановлення Caddy на Debian
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 Приклад 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 без перезапуску контейнера.
Кейс: міграція 10 сайтів з Nginx на Caddy
Для одного з клієнтів ми виконали міграцію 10 сайтів на Bitrix з Nginx на Caddy. Раніше налаштування кожного нового сайту займало близько 2 годин через ручне додавання сертифікатів та конфігурацію upstream. Після міграції на Caddy новий сайт додається за 15 хвилин — достатньо дописати кілька рядків у Caddyfile, а SSL підхоплюється автоматично. Час розгортання скоротився в 8 разів, а споживання пам'яті зменшилося на 40%. Завдяки вбудованій підтримці HTTP/3 швидкість завантаження на мобільних пристроях зросла на 20%.
Порівняння з аналогами
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 для вашого стеку.
За багато років роботи (10+ років досвіду, 500+ проєктів) ми впровадили 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 (https://caddyserver.com/docs/api). Налаштування зворотного проксі Caddy займає хвилини. Caddy Docker image офіційний, Caddy API надає REST-доступ, Caddy SSL автоматичний, а зворотний проксі Caddy простий.







