Инженерные заметки

Caddy как reverse proxy с автоматическим TLS

Caddy — это веб-сервер и обратный прокси, главная особенность которого — автоматический HTTPS из коробки. В отличие от связки nginx + certbot, тут не нужно вручную выпускать и продлевать сертификаты: Caddy сам общается с Let's Encrypt по ACME и держит TLS актуальным.

Минимальный конфиг

Вся конфигурация живёт в одном файле — Caddyfile. Чтобы проксировать домен на приложение, слушающее порт 8000, достаточно трёх строк:

app.example.org {
    reverse_proxy localhost:8000
}

При первом запросе Caddy увидит новый домен, пройдёт ACME-челлендж и выпустит сертификат. Обязательное условие — A-запись домена должна указывать на этот сервер, иначе HTTP-01 челлендж не пройдёт.

Несколько сайтов и статика

На одном сервере можно держать сколько угодно сайтов — каждый своим блоком. Динамику отдаём через reverse_proxy, статику — через file_server:

romefell.org, www.romefell.org {
    root * /srv/site
    encode zstd gzip
    file_server
    try_files {path} {path}/ /index.html
}

ocr.romefell.org {
    reverse_proxy ocr:8000
}

Директива encode включает сжатие, file_server отдаёт файлы из root, а try_files аккуратно разрешает «красивые» URL без расширения. Перечитать конфиг без даунтайма — caddy reload.

Итог

Caddy снимает с вас всю рутину вокруг сертификатов и даёт читаемый конфиг. Для небольшого парка сервисов это заметно проще, чем nginx, и почти не требует обслуживания.


← ко всем статьям