Налаштування 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
    }
}

# Зворотний проксі для 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)

# Перезавантажити конфіг через 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 години.