Caddy: Руководство по установке, использованию и настройке
Caddy: Руководство по установке, использованию и настройке

Сегодня мы поговорим об очень крутом веб-сервере HTTP/2 с открытым исходным кодом — Caddy. Caddy написан на языке Go. Его файл конфигурации краток, понятен и мощный, что упрощает развертывание HTTP-сервисов. Лучшая особенность Caddy — то, что HTTPS включен по умолчанию. В этой статье я покажу вам, как установить и использовать Caddy, а также как настроить Caddy через Caddyfile и API.

Знакомство с Кэдди

Caddy — это веб-сервер HTTP/2 с открытым исходным кодом, созданный с использованием языка программирования Go. Его основные функции включают автоматический HTTPS, HTTP/2, IPv6, Markdown, WebSockets, FastCGI, шаблоны и многое другое. История Caddy берет свое начало в 2015 году, когда ее впервые предложил Мэтт Холт в своей магистерской диссертации. Его целью было создать веб-сервер, который мог бы автоматически получать и обновлять сертификаты TLS, упрощая развертывание защищенных веб-сайтов. Идея получила широкое признание, и вскоре Caddy привлек большое количество разработчиков и пользователей.

Установка Кэдди

Бинарная установка

  1. Сначала нам нужно скачать Caddy из двоичного файла,Вы можете скачать его здесь:https://caddyserver.com/download
  2. После завершения загрузки нам нужно выполнить следующую команду:
Язык кода:sh
копировать
sudo mv caddy /usr/bin/
sudo mkdir /etc/caddy
sudo cp Caddyfile /etc/caddy/Caddyfile
sudo groupadd --system caddy
sudo useradd --system \
    --gid caddy \
    --create-home \
    --home-dir /var/lib/caddy \
    --shell /usr/sbin/nologin \
    --comment "Caddy web server" \
    caddy
  1. Далее нам нужно написать следующее /etc/systemd/system/caddy.service документ:
Язык кода:plain
копировать
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target

[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target
  1. Наконец, запускаем Caddy:
Язык кода:sh
копировать
sudo systemctl daemon-reload
sudo systemctl enable --now caddy
sudo systemctl status caddy

Примечание. Если вы используете CentOS 7, поскольку его версия systemd слишком низкая (219), вам необходимо сначала обновить ее.

Язык кода:sh
копировать
wget https://copr.fedorainfracloud.org/coprs/jsynacek/systemd-backports-for-centos-7/repo/epel-7/jsynacek-systemd-backports-for-centos-7-epel-7.repo -O /etc/yum.repos.d/jsynacek-systemd-centos-7.repo
sudo yum update systemd -y

Установка докера

Если вы предпочитаете использовать Докер, ты можешь Docker Hub Найдено на Caddy из Официальное изображение:https://hub.docker.com/_/caddy

Вы можете запустить контейнер Caddy с помощью следующей команды:

Язык кода:sh
копировать
docker run -d --name caddy \
  -p 80:80 \
  -v $PWD/Caddyfile:/etc/caddy/Caddyfile \
  -v caddy_data:/data \
  caddy

Кэдди использует

Использовать Caddy очень просто, вам просто нужно выполнить следующую команду:

Язык кода:sh
копировать
caddy run

Вы также можете указать Caddyfile:

Язык кода:sh
копировать
caddy run --config /path/to/Caddyfile

Если вам нужно запустить статический файловый сервер, вы можете использовать следующую команду:

Язык кода:sh
копировать
caddy file-server --listen :2015 --root ~/mysite

Если вам нужно запустить файловый браузер, вы можете использовать следующую команду:

Язык кода:sh
копировать
caddy file-server --browse

Если вам нужно запустить обратный прокси-сервер, вы можете использовать следующую команду:

Язык кода:sh
копировать
caddy reverse-proxy --from :2080 --to :9000

Если вам нужно отформатировать Caddyfile, вы можете использовать следующую команду:

Язык кода:sh
копировать
caddy fmt --overwrite

Caddy API

Caddy предоставляет интерфейс API, с помощью которого вы можете просматривать и изменять конфигурацию Caddy. Например, вы можете использовать следующую команду для просмотра текущей конфигурации:

Язык кода:sh
копировать
curl localhost:2019/config/

Вы также можете добавить новую конфигурацию JSON:

Язык кода:sh
копировать
curl localhost:2019/load \
  -H "Content-Type: application/json" \
  -d @caddy.json

Или обновите существующий Caddyfile:

Язык кода:sh
копировать
curl localhost:2019/load \
	-H "Content-Type: text/caddyfile" \
	--data-binary @Caddyfile

Caddyfile

Caddyfile — это файл конфигурации Caddy, который использует простой синтаксис для определения и настройки поведения Caddy. Вот некоторые основные конфигурации Caddyfile:

  • Простой ответ:
Язык кода:plain
копировать
:2015

respond "Hello, world!"
  • Файловый сервер:
Язык кода:plain
копировать
localhost

root * /var/www/mysite
file_server
  • Браузер файлов:
Язык кода:plain
копировать
localhost

root * /var/www/mysite
file_server browse
  • обратный прокси:
Язык кода:plain
копировать
:2080

reverse_proxy :9000
  • Автоматический HTTPS:
Язык кода:plain
копировать
your_domain.com:8443

reverse_proxy :9000
  • HTTPS с использованием IP:
Язык кода:plain
копировать
your_ip:8443

reverse_proxy :9000
  • Отключите перенаправление HTTP на HTTPS:
Язык кода:plain
копировать
{
    auto_https disable_redirects
}

your_domain.com:8443

reverse_proxy :9000
  • Несколько сайтов:
Язык кода:plain
копировать
localhost:2015 {
	respond "Hello, world!"
}

localhost:2016 {
	respond "Goodbye, world!"
}
  • Токен сопоставления: Подпути только для прокси:
Язык кода:plain
копировать
localhost

reverse_proxy /api/* 127.0.0.1:9005
  • Путь обработки:
Язык кода:plain
копировать
example.com {
	handle_path /foo/* {
		# The path has the "/foo" prefix stripped
	}

	handle /bar/* {
		# The path still retains "/bar"
	}
}

Пример

Вот использование Caddy Функция прокси подпути для прокси n8n Сервис из Пример. Во-первых, нам нужно n8n Добавить N8N_PATH Переменные среды:

Язык кода:sh
копировать
docker run -d \
  --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -e TZ="Asia/Shanghai" \
  -e N8N_PATH=/n8n/ \
  -e N8N_SECURE_COOKIE=false \
  docker.n8n.io/n8nio/n8n

Тогда мы сможем Caddy проходить handle_path Директива обрабатывает запросы подпутей и перезаписывает путь:

Язык кода:plain
копировать
{
   auto_https disable_redirects
}

9.135.143.173:8443 {
    handle_path /n8n/* {
        reverse_proxy localhost:5678
    }
    handle {
        reverse_proxy localhost:8080
    }
}

Таким образом, все сообщения, отправленные на /n8n/* Все запросы будут пересылаться на localhost:5678,другойиз Запрос будет проксированприезжать localhost:8080

Подвести итог

Выше представлено мое введение в Caddy, включая его установку, использование, API и Caddyfile. Я надеюсь, что эта статья поможет вам лучше понять и использовать Caddy. Если у вас есть какие-либо вопросы или предложения, пожалуйста, оставьте сообщение в области комментариев.

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.