Настройка веб-сервера Caddy: автоматический HTTPS и обратный прокси
Caddy — современный веб-сервер, выделяющийся автоматическим управлением HTTPS-сертификатами. Благодаря интеграции с Let's Encrypt он автоматически получает, обновляет и настраивает SSL-сертификаты.
Что такое Caddy?
Отличительные особенности Caddy:
Автоматический HTTPS: Управление сертификатами через Let's Encrypt полностью автоматическое
Простая конфигурация: Синтаксис Caddyfile легко читается
HTTP/2 и HTTP/3: Включены по умолчанию
Обратный прокси: Встроенная балансировка нагрузки и проверки работоспособности
Перезагрузка без простоя: Нет прерываний при изменении конфигурации
Caddy требует привилегий root для использования портов 80 и 443. Это автоматически управляется при запуске как systemd-сервис.
Caddy отвечает современным требованиям к веб-серверам с автоматическим управлением HTTPS и простой конфигурацией. Он требует значительно меньше настроек по сравнению с Nginx или Apache, предлагая при этом все функции, необходимые для production-окружений. Это идеальный выбор для тех, кто хочет автоматизировать управление сертификатами Let's Encrypt.
Часто задаваемые вопросы
Где Caddy хранит сертификаты?
Caddy хранит сертификаты по умолчанию в '/var/lib/caddy/.local/share/caddy/' на Linux. Эта директория создаётся автоматически при запуске как systemd-сервис. При использовании Docker необходимо постоянно монтировать том 'caddy_data', иначе при каждом перезапуске будет запрашиваться новый сертификат.
Что делать при проблемах с ограничением скорости Let's Encrypt?
Let's Encrypt ограничивает 5 сертификатами в неделю для одного домена. При тестировании используйте staging-окружение с 'acme_ca https://acme-staging-v02.api.letsencrypt.org/directory'. Staging-сертификаты помечаются браузерами как ненадёжные, но не имеют ограничений. Удалите строку staging при переходе в production.
В чём основное отличие Caddy от Nginx?
Caddy предлагает автоматическое управление HTTPS и значительно более простую конфигурацию. Nginx имеет больше параметров настройки и более широкую поддержку сообщества. Caddy написан на Go и поставляется с поддержкой HTTP/3 по умолчанию. Nginx написан на C и может показывать лучшую производительность при очень высоком трафике.
Как применить изменения Caddyfile?
Можно перезагрузить без простоя с помощью 'sudo systemctl reload caddy' или 'caddy reload --config /etc/caddy/Caddyfile'. Рекомендуется сначала проверить конфигурацию с 'caddy validate'. Если загружается неверная конфигурация, Caddy откатывается к предыдущей.
Как получить wildcard-сертификат с Caddy?
Wildcard-сертификаты требуют DNS-challenge. При использовании Cloudflare добавьте модуль 'caddy-dns/cloudflare' и установите API-токен. Используйте директиву 'tls { dns cloudflare {env.CF_API_TOKEN} }' в Caddyfile. Возможно, потребуется создать пользовательскую сборку с xcaddy, включая модуль DNS-провайдера.
Как защитить Admin API Caddy?
По умолчанию Admin API слушает только на localhost:2019. Не открывайте этот порт наружу в production. Если нужно удалённое управление, используйте SSH-туннель вместо 'admin 0.0.0.0:2019'. Альтернативно можно полностью отключить API с 'admin off'.
Определение и управление многоконтейнерными приложениями с Docker Compose: зависимости сервисов, переменные окружения, проверки работоспособности, масштабирование и развёртывание в production. Полное руководство.
Создание CI/CD-пайплайнов с GitHub Actions: сборка и публикация Docker, развёртывание на сервере по SSH, автоматизация тестов, управление секретами и оптимизация рабочих процессов.
Установка Ansible, файл инвентаря, написание playbook, структура ролей, переменные, зашифрованный vault, ad-hoc команды и автоматизация конфигурации серверов. Пошаговое руководство.