🟢 Caddy
Веб-сервер с автоматическим HTTPS: Caddyfile, реверс-прокси, статика, редиректы и команды.
Шпаргалки · Администрирование · #caddy #webserver #https #proxy
Особенность
Caddy сам получает и продлевает TLS-сертификаты (Let's Encrypt, ZeroSSL) и включает HTTPS по умолчанию. Конфигурация короткая: файл Caddyfile.
Установка и запуск
sudo apt install -y caddy # Debian, Ubuntu (репозиторий Caddy)
caddy run --config Caddyfile # на переднем плане
caddy start / stop / reload --config Caddyfile
caddy validate --config Caddyfile
caddy fmt --overwrite Caddyfile
sudo systemctl reload caddy
Docker: docker run -d -p 80:80 -p 443:443 -v $PWD/Caddyfile:/etc/caddy/Caddyfile caddy.
Статический сайт
example.com {
root * /var/www/html
file_server
encode zstd gzip
}
Для получения сертификата домен должен указывать на сервер, порты 80 и 443 открыты.
Реверс-прокси
app.example.com {
reverse_proxy localhost:3000
}
api.example.com {
reverse_proxy 10.0.0.11:8080 10.0.0.12:8080 {
lb_policy round_robin
health_uri /health
}
}
Маршрутизация и редиректы
example.com {
redir /old /new permanent
handle /api/* {
reverse_proxy localhost:8080
}
handle {
root * /var/www/spa
try_files {path} /index.html
file_server
}
}
www.example.com {
redir https://example.com{uri} permanent
}
handle выбирает один блок, handle_path отрезает префикс.
Безопасность и заголовки
example.com {
header {
Strict-Transport-Security "max-age=31536000"
X-Content-Type-Options nosniff
-Server
}
basicauth /admin/* {
admin $2a$14$... # хэш: caddy hash-password
}
request_body { max_size 10MB }
log { output file /var/log/caddy/access.log }
}
Локальная разработка
localhost {
reverse_proxy localhost:5173
}
Caddy выпустит локальный сертификат: caddy trust установит корневой.
Переменные и модули
Плейсхолдеры {host}, {uri}, {remote_host}, переменные среды {$ENV_VAR}. Wildcard-сертификаты через DNS-challenge требуют плагина (xcaddy build --with ...). Admin API на localhost:2019 позволяет менять конфигурацию на лету.
Caddy, Nginx или Apache
Caddy проще в настройке и сам делает HTTPS. Nginx популярнее и тоньше настраивается под высокие нагрузки. Apache силён модулями и .htaccess.