Настройка Caddy для веб-сервера

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Caddy для веб-сервера
Простая
~2-3 часа
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка Caddy для веб-сервера

Caddy — современный веб-сервер на Go с автоматическим HTTPS через Let's Encrypt. Получает и обновляет SSL-сертификаты без настройки certbot. Конфигурация в разы проще Nginx.

Установка

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-main main" | tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy

Caddyfile

# /etc/caddy/Caddyfile

# Автоматический HTTPS — просто указать домен
example.com {
    root * /var/www/myapp/public

    # PHP-FPM
    php_fastcgi unix//var/run/php/php8.3-fpm.sock

    # SPA: все запросы на index.html
    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  # убрать заголовок Server
    }

    # Статика
    @static {
        path *.css *.js *.jpg *.png *.gif *.ico *.svg *.woff2
    }
    header @static Cache-Control "public, max-age=31536000, immutable"

    # Запретить .env
    @dotfiles {
        path /.*
    }
    respond @dotfiles 403

    log {
        output file /var/log/caddy/access.log
        format json
    }
}

# Reverse proxy для Node.js
api.example.com {
    reverse_proxy localhost:3000 {
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-Proto {scheme}
    }
}

# Редирект www → non-www
www.example.com {
    redir https://example.com{uri} permanent
}

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

# Всё в одном файле

site1.com {
    root * /var/www/site1/public
    php_fastcgi unix//var/run/php/php8.3-fpm.sock
    encode gzip
}

site2.com {
    reverse_proxy localhost:4000
}

# Wildcard (нужен DNS-провайдер с поддержкой ACME DNS challenge)
*.example.com {
    tls {
        dns cloudflare {env.CLOUDFLARE_API_TOKEN}
    }
    reverse_proxy localhost:8080
}

Caddy API (JSON config)

# Перезагрузить конфиг через API
curl -X POST "http://localhost:2019/load" \
    -H "Content-Type: application/json" \
    -d @caddy.json

# Проверить текущую конфигурацию
curl http://localhost:2019/config/

Docker

# 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 — самый быстрый в настройке веб-сервер: базовая конфигурация с SSL занимает 1–2 часа.