На главную

DevOps и серверы

nginx → Caddy или Apache

Переносит виртуальный хост nginx в Caddy или Apache: домены, TLS, корень сайта, проксирование, try_files, кэш и запреты. Всё, что перенести нельзя, показывается отдельным списком, а не теряется молча.

Конфиг nginx

Caddyfile

shop.ru, www.shop.ru {
    tls /etc/letsencrypt/live/shop.ru/fullchain.pem /etc/letsencrypt/live/shop.ru/privkey.pem
    root * /srv/shop/public
    request_body {
        max_size 20MB
    }
    try_files {path} {path}/ /index.html
    handle /api/* {
        reverse_proxy 127.0.0.1:3000
    }
    @static_jpgjpegpngcssjs path \.(jpg|jpeg|png|css|js)$*
    header @static_jpgjpegpngcssjs Cache-Control "max-age=2592000, public"
    @blocked_git path /.git*
    respond @blocked_git 403
    file_server
    encode gzip zstd
    log {
        output file /var/log/caddy/access.log
    }
}

Перенести руками

  • location ~server

    Регулярное выражение переносится, но синтаксис у Apache и Caddy свой — проверьте вручную.

Что проверить после переноса

  • Caddy сам получает сертификат — строка tls нужна только для своего.
  • Проверка и форматирование: caddy validate --config Caddyfile, caddy fmt -w.
  • Порядок правил у Apache и Caddy другой: в nginx выигрывает самый точный location, здесь — порядок в файле.