Caddy (веб-сервер)

Веб-сервер с открытым исходным кодом
Кэдди
Оригинальный автор(ы)Мэтью Холт
Первоначальный выпуск28 апреля 2015 г. ; 9 лет назад (2015-04-28)
Стабильный релиз
2.8.4 [1]  / 2 июня 2024 г. ; 4 месяца назад (2 June 2024)
Репозиторийgithub.com/caddyserver/caddy
Написано вПерейти [2]
Операционная системаВарианты BSD , Linux , Plan 9 , macOS и Windows
ПлатформаIA-32 (i386), x86-64 , ARM , MIPS , S390X
ТипВеб-сервер , обратный прокси-сервер
ЛицензияАпач 2
Веб-сайтcaddyserver.com

Caddyрасширяемый кроссплатформенный веб-сервер с открытым исходным кодом, написанный на Go .

Название «Caddy» относится как к помощнику для выполнения утомительных задач, так и к способу организации нескольких частей в упрощенную систему. [3] По своей сути Caddy — это расширяемая платформа для развертывания долгосрочных служб («приложений») с использованием единой унифицированной конфигурации, которая может обновляться в режиме онлайн с помощью REST API . [4] Официальные дистрибутивы Caddy поставляются с набором стандартных модулей, которые включают HTTP- сервер , автоматизацию TLS и приложения PKI . [5] Он наиболее известен своими автоматическими функциями HTTPS. [6] [7]

Архитектура

Caddy состоит из трех основных компонентов: команда , основная библиотека и модули конфигурации. [8] Команда — это расширяемый интерфейс, с помощью которого выполняется программа ; она также может загружать файлы конфигурации , запускать общие режимы, управлять установленными плагинами и предлагать соответствующие служебные функции. Основная библиотека имеет API для загрузки, выгрузки и управления конфигурацией ; но сама по себе она не делает ничего особенно полезного. Большая часть функциональности Caddy предоставляется модулями, которые являются плагинами, расширяющими структуру конфигурации Caddy; например, HTTP-сервер — это модуль. [9] Модули Caddy реализуют различные долго работающие службы, веб-стандарты и другие полезные функции.

Входные данные Caddy — это документ конфигурации JSON [10] , который принимается через открытый сокет через RESTful HTTP API. [11] [6] При отсутствии HTTP-клиента интерфейс командной строки Caddy может использоваться для загрузки файлов конфигурации. [12] Адаптеры конфигурации могут использоваться для преобразования других форматов конфигурации в JSON . Существующие адаптеры включают Caddyfile, который имеет первоклассную поддержку в командной строке; а также YAML , TOML , Nginx и несколько других форматов. [13] [6]

Когда конфигурация получена через его административный сокет, Caddy декодирует конфигурацию для всех указанных модулей и начинает запускать все модули приложения. [6] Когда модули приложения инициализируются, они сами могут загружать и инициализировать модули, которые они используют. Например, HTTP-сервер — это модуль приложения, который использует модули обработчика HTTP для обработки HTTP-запросов; эти обработчики могут использовать еще другие модули для реализации своих функций и т. д. [14] Все эти модули инициализируются во время фазы загрузки конфигурации. [8]

Плагины устанавливаются путем статической компиляции их непосредственно в двоичный файл Caddy. [3] [6] Без плагинов собственная структура конфигурации Caddy имеет только некоторые базовые параметры для администрирования и ведения журнала. [10] Все остальные функции должны предоставляться модулями приложений. Официальные дистрибутивы Caddy поставляются с десятками стандартных модулей; [5] другие можно добавить с веб-сайта проекта, [15] используя xcaddyинструмент командной строки или вручную скомпилировав пользовательскую сборку. [16]

Мик Гибен создал ответвление Caddy для использования в качестве ядра CoreDNS , теперь являющегося проектом Cloud Native Computing Foundation , поскольку он оценил его общую архитектуру и простоту конфигурации. [17]

HTTP-сервер

HTTP-сервер — это модуль приложения, который входит в стандартную комплектацию официальных дистрибутивов Caddy. [9] Он в основном используется как статический файловый сервер [18] и обратный прокси-сервер для балансировки нагрузки. [19] Хотя в основе HTTP-функций Caddy лежит реализация, найденная в стандартной библиотеке Go, [20] в качестве промежуточного программного обеспечения доступны различные улучшения и настройки , которые отображаются через параметры конфигурации: [6]

По умолчанию TLS используется автоматически, если какие-либо маршруты имеют непустой хост-сопоставитель. [21] Предполагается, что это имена сайтов или IP-адреса , которые обслуживает Caddy, поэтому Caddy автоматически закупит и обновит сертификаты для настроенных имен хостов и IP-адресов. Когда автоматический HTTPS активирован таким образом, Caddy также перенаправит HTTP-запросы в их эквивалентное местоположение HTTPS.

Разработка

Caddy версии 2 был выпущен 5 мая 2020 года. [7] Рецензенты говорят, что он по-прежнему имеет более простой синтаксис файла конфигурации, чем Apache Web Server , хотя формат конфигурации версии 2 в значительной степени несовместим с предыдущим основным выпуском Caddy. [7] [22]

Ссылки

  1. ^ "Release 2.8.4". 2 июня 2024 г. Получено 20 июня 2024 г.
  2. ^ Gerrand, Andrew (17 февраля 2016 г.). "Go 1.6 выпущен". golang.org . Получено 5 марта 2016 г. .
  3. ^ ab README.md, caddyserver/caddy на GitHub, 2021-09-27 , получено 2021-09-27
  4. ^ "Welcome - Caddy Documentation". caddyserver.com . Архивировано из оригинала 2015-05-02 . Получено 2021-09-27 .
  5. ^ ab imports.go, caddyserver/caddy на GitHub, 2021-09-27 , получено 2021-09-27
  6. ^ abcdef Вудбек, Адам (2021). Сетевое программирование с GO: безопасный код и надежные сетевые сервисы с нуля. Сан-Франциско, Калифорния. С. 217–239. ISBN 978-1-7185-0088-4. OCLC  1198449668.{{cite book}}: CS1 maint: location missing publisher (link)
  7. ^ abc Джим Солтер (6 мая 2020 г.). «Caddy предлагает TLS, HTTPS и многое другое в одном свободном от зависимостей веб-сервере Go». Ars Technica . Получено 12 июня 2023 г. .
  8. ^ ab "Архитектура - Документация Caddy". caddyserver.com . Архивировано из оригинала 2020-04-14 . Получено 2021-09-27 .
  9. ^ ab "Module http - Caddy Documentation". caddyserver.com . Архивировано из оригинала 2020-05-06 . Получено 2021-09-27 .
  10. ^ ab "JSON Config Structure - Caddy Documentation". caddyserver.com . Архивировано из оригинала 2020-04-14 . Получено 2021-09-27 .
  11. ^ "API - Caddy Documentation". caddyserver.com . Архивировано из оригинала 2020-03-02 . Получено 2021-09-27 .
  12. ^ "Командная строка - Документация Caddy". caddyserver.com . Архивировано из оригинала 2020-03-02 . Получено 2021-09-27 .
  13. ^ "Config Adapters - Caddy Documentation". caddyserver.com . Архивировано из оригинала 2020-04-14 . Получено 2021-09-27 .
  14. ^ Холт, Мэтью (2019-12-04), Инженерные проблемы длительных программ го, Forge Utah , получено 2021-09-27
  15. ^ "Download Caddy". caddyserver.com . Архивировано из оригинала 2015-05-02 . Получено 2021-09-27 .
  16. ^ "Сборка из исходного кода - Документация Caddy". caddyserver.com . Архивировано из оригинала 2020-05-29 . Получено 2021-09-27 .
  17. ^ Джон Балемарик; Крикет Лю (2019). Изучение CoreDNS. "O'Reilly Media, Inc.". ISBN 9781492047919. Получено 12 июня 2023 г. .
  18. ^ "Краткий обзор статических файлов - Документация Caddy". caddyserver.com . Архивировано из оригинала 2020-05-08 . Получено 2021-09-27 .
  19. ^ "Краткий обзор обратного прокси-сервера - Документация Caddy". caddyserver.com . Архивировано из оригинала 2020-05-08 . Получено 2021-09-27 .
  20. ^ Холт, Мэтью (2015-05-27). «Взгляд внутрь Caddy, веб-сервера, написанного на Go». blog.gopheracademy.com . Архивировано из оригинала 2015-05-30 . Получено 2021-09-27 .
  21. ^ "Автоматический HTTPS - Документация Caddy". caddyserver.com . Архивировано из оригинала 2016-03-04 . Получено 2021-09-27 .
  22. ^ Джек Уоллен (26 мая 2022 г.). «Как развернуть одну веб-страницу на сервере Caddy из Caddyfile». TechRepublic . Получено 12 июня 2023 г. .
  • Официальный сайт
Retrieved from "https://en.wikipedia.org/w/index.php?title=Caddy_(web_server)&oldid=1241632412"