Чому 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 простий.







