Кэдди (веб-сервер)
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Оригинальный автор(ы) | Мэтью Холт |
---|---|
Первоначальный выпуск | 28 апреля 2015 г |
Стабильная версия | 2.8.4 [1] / 2 июня 2024 г |
Репозиторий | github |
Написано в | Идти [2] |
Операционная система | Варианты BSD , Linux , Plan 9 , macOS и Windows |
Платформа | ИА-32 (i386), x86-64 , ARM , MIPS , S390X |
Тип | Веб-сервер , обратный прокси-сервер |
Лицензия | Апач 2 |
Веб-сайт | кэддисервер |
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 , хотя формат конфигурации версии 2 в значительной степени несовместим с предыдущим основным выпуском Caddy. [7] [22]
Ссылки
[ редактировать ]- ^ «Выпуск 2.8.4» . 2 июня 2024 г. Проверено 20 июня 2024 г.
- ^ Герран, Эндрю (17 февраля 2016 г.). «Выпущена версия Go 1.6» . golang.org . Проверено 5 марта 2016 г.
- ^ Jump up to: а б README.md , caddyserver/caddy на GitHub, 27 сентября 2021 г. , получено 27 сентября 2021 г.
- ^ «Добро пожаловать — Документация Caddy» . caddyserver.com . Архивировано из оригинала 2 мая 2015 г. Проверено 27 сентября 2021 г.
- ^ Jump up to: а б imports.go , caddyserver/caddy на GitHub, 27 сентября 2021 г. , получено 27 сентября 2021 г.
- ^ Jump up to: а б с д и ж Вудбек, Адам (2021). Сетевое программирование с помощью GO: безопасный код и надежные сетевые сервисы с нуля . Сан-Франциско, Калифорния. стр. 217–239. ISBN 978-1-7185-0088-4 . OCLC 1198449668 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ Jump up to: а б с Джим Солтер (6 мая 2020 г.). «Caddy предлагает TLS, HTTPS и многое другое на одном веб-сервере Go без зависимостей» . Арс Техника . Проверено 12 июня 2023 г.
- ^ Jump up to: а б «Архитектура — Документация Caddy» . caddyserver.com . Архивировано из оригинала 14 апреля 2020 г. Проверено 27 сентября 2021 г.
- ^ Jump up to: а б «Модуль http — Документация Caddy» . caddyserver.com . Архивировано из оригинала 06 мая 2020 г. Проверено 27 сентября 2021 г.
- ^ Jump up to: а б «Структура конфигурации JSON — документация Caddy» . caddyserver.com . Архивировано из оригинала 14 апреля 2020 г. Проверено 27 сентября 2021 г.
- ^ «API — Документация Caddy» . caddyserver.com . Архивировано из оригинала 2 марта 2020 г. Проверено 27 сентября 2021 г.
- ^ «Командная строка — Документация Caddy» . caddyserver.com . Архивировано из оригинала 2 марта 2020 г. Проверено 27 сентября 2021 г.
- ^ «Адаптеры конфигурации — Документация Caddy» . caddyserver.com . Архивировано из оригинала 14 апреля 2020 г. Проверено 27 сентября 2021 г.
- ^ Холт, Мэтью (04 декабря 2019 г.), Инженерные проблемы длительных программ го , Фордж, Юта , получено 27 сентября 2021 г.
- ^ «Скачать Кэдди» . caddyserver.com . Архивировано из оригинала 2 мая 2015 г. Проверено 27 сентября 2021 г.
- ^ «Сборка из исходного кода — Документация Caddy» . caddyserver.com . Архивировано из оригинала 29 мая 2020 г. Проверено 27 сентября 2021 г.
- ^ Джон Балемарик; Крикет Лю (2019). Изучаем CoreDNS . «О'Рейли Медиа, Инк.». ISBN 9781492047919 . Проверено 12 июня 2023 г.
- ^ «Краткое руководство по статическим файлам — Документация Caddy» . caddyserver.com . Архивировано из оригинала 8 мая 2020 г. Проверено 27 сентября 2021 г.
- ^ «Краткое руководство по обратному прокси — Документация Caddy» . caddyserver.com . Архивировано из оригинала 8 мая 2020 г. Проверено 27 сентября 2021 г.
- ^ Холт, Мэтью (27 мая 2015 г.). «Взгляд внутрь Caddy, веб-сервера, написанного на Go» . blog.gopheracademy.com . Архивировано из оригинала 30 мая 2015 г. Проверено 27 сентября 2021 г.
- ^ «Автоматический HTTPS — Документация Caddy» . caddyserver.com . Архивировано из оригинала 4 марта 2016 г. Проверено 27 сентября 2021 г.
- ^ Джек Уоллен (26 мая 2022 г.). «Как развернуть одну веб-страницу на сервере Caddy из Caddyfile» . Техреспублика . Проверено 12 июня 2023 г.