В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Оригинальный автор(ы) | Мэтью Холт |
---|---|
Первоначальный выпуск | 28 апреля 2015 г. (2015-04-28) |
Стабильный релиз | 2.8.4 [1] / 2 июня 2024 г. (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-сервер — это модуль приложения, который входит в стандартную комплектацию официальных дистрибутивов 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]
{{cite book}}
: CS1 maint: location missing publisher (link)