| 原作者 | マシュー・ホルト |
|---|---|
| 初回リリース | 2015年4月28日 |
| 安定リリース | 2.8.4 [1]
/ 2024年6月2日 |
| リポジトリ | github.com/caddyserver/caddy |
| 書かれた | 囲碁[2] |
| オペレーティング·システム | BSD バリアント、Linux、Plan 9、macOS、Windows |
| プラットフォーム | IA-32 (i386)、x86-64、ARM、MIPS、S390X |
| タイプ | Webサーバー、リバースプロキシサーバー |
| ライセンス | アパッチ2 |
| Webサイト | キャディサーバー |
Caddy は、Goで書かれた、拡張可能なクロスプラットフォームのオープンソース Web サーバーです。
「Caddy」という名前は、面倒な作業を手助けするヘルパーと、複数の部分を簡素化されたシステムに整理する方法の両方を指します。[3] Caddyの本質は、REST APIを使用してオンラインで更新できる単一の統合された構成を使用して、長期実行サービス(「アプリ」)を展開するための拡張可能なプラットフォームです。[4]公式のCaddyディストリビューションには、 HTTPサーバー、TLS自動化、PKIアプリを含む一連の標準モジュールが付属しています。 [5]自動HTTPS機能で最もよく知られています。[6] [7]
建築
Caddyは、コマンド、コアライブラリ、構成モジュールの3つの主要コンポーネントで構成されています。 [8]コマンドは、プログラムを実行するための拡張可能なインターフェースです。また、構成ファイルの読み込み、共通モードの実行、インストールされたプラグインの管理、関連するユーティリティ機能の提供も行えます。コアライブラリには、構成の読み込み、アンロード、管理のためのAPIがありますが、それ自体では特に便利な機能はありません。Caddyの機能のほとんどは、Caddyの構成構造を拡張するプラグインであるモジュールによって提供されます。たとえば、HTTPサーバーはモジュールです。[9] Caddyモジュールは、さまざまな長期実行サービス、Web標準、その他の便利な機能を実装します。
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]その他のモジュールは、プロジェクトのWebサイトから追加できます。[15]コマンドラインツールを使用するxcaddyか、カスタムビルドを手動でコンパイルすることで追加できます。[16]
Miek GiebenはCaddyの全体的なアーキテクチャと構成のシンプルさを高く評価し、 CaddyをフォークしてCoreDNS (現在はCloud Native Computing Foundationのプロジェクト)のコアとして使用しました。 [17]
HTTP サーバー
HTTPサーバーは、公式Caddyディストリビューションに標準で付属するアプリモジュールです。[9]主に静的ファイルサーバー[18]と負荷分散リバースプロキシとして使用されます。[19] CaddyのHTTP機能の基礎はGoの標準ライブラリにある実装を使用していますが、[20]さまざまな拡張機能とカスタマイズがミドルウェアとして利用可能であり、構成パラメータを通じて公開されています。[6]
デフォルトでは、ルートに空でないホストマッチャーがある場合、TLSが自動的に使用されます。[21]これらはCaddyがサービスを提供しているサイト名またはIPアドレスであると想定されるため、Caddyは構成されたホスト名とIPアドレスの証明書を自動的に取得して更新します。このように自動HTTPSが有効になると、CaddyはHTTPリクエストを同等のHTTPSの場所にリダイレクトします。
発達
Caddyバージョン2は2020年5月5日にリリースされました。[7]レビュー担当者によると、バージョン2の設定形式はCaddyの以前のメジャーリリースとはほとんど互換性がありませんが、 Apache Web Serverよりも設定ファイルの構文がシンプルであるとのことです。[7] [22]
参考文献
- ^ 「リリース 2.8.4」。2024年6月2日。 2024年6月20日閲覧。
- ^ Gerrand, Andrew (2016 年 2 月 17 日). 「Go 1.6 がリリースされました」. golang.org . 2016 年3 月 5 日閲覧。
- ^ ab README.md、caddyserver/caddy on GitHub、2021-09-27、2021-09-27取得
- ^ 「Welcome - Caddy Documentation」。caddyserver.com 。 2015年5月2日時点のオリジナルよりアーカイブ。 2021年9月27日閲覧。
- ^ ab imports.go、caddyserver/caddy on GitHub、2021-09-27、2021-09-27取得
- ^ abcdef Woodbeck, Adam (2021). GO によるネットワークプログラミング: 安全で信頼性の高いネットワークサービスをゼロからコーディングする. サンフランシスコ、カリフォルニア州. pp. 217–239. ISBN 978-1-7185-0088-4. OCLC 1198449668.
{{cite book}}: CS1 maint: location missing publisher (link) - ^ abc Jim Salter (2020年5月6日). 「Caddyは、依存性のないGo WebサーバーでTLS、HTTPSなどを提供します」. Ars Technica . 2023年6月12日閲覧。
- ^ ab 「アーキテクチャ - Caddy ドキュメント」。caddyserver.com。2020年4 月 14 日時点のオリジナルよりアーカイブ。2021 年 9 月 27 日閲覧。
- ^ ab 「Module http - Caddy Documentation」。caddyserver.com 。 2020年5月6日時点のオリジナルよりアーカイブ。2021年9月27日閲覧。
- ^ ab 「JSON Config Structure - Caddy Documentation」。caddyserver.com 。 2020年4月14日時点のオリジナルよりアーカイブ。2021年9月27日閲覧。
- ^ 「API - Caddy ドキュメント」。caddyserver.com。2020年3 月 2 日時点のオリジナルよりアーカイブ。2021 年 9 月 27 日閲覧。
- ^ 「コマンドライン - Caddy ドキュメント」。caddyserver.com。2020年3 月 2 日時点のオリジナルよりアーカイブ。2021年 9 月 27 日閲覧。
- ^ 「Config Adapters - Caddy Documentation」。caddyserver.com。2020年4月14日時点のオリジナルよりアーカイブ。2021年9月27日閲覧。
- ^ Holt, Matthew (2019-12-04)、長時間実行される Go プログラムのエンジニアリング上の課題、Forge Utah 、2021-09-27取得
- ^ 「Caddy をダウンロード」。caddyserver.com。2015年5 月 2 日時点のオリジナルよりアーカイブ。2021 年 9 月 27 日閲覧。
- ^ 「ソースからビルド - Caddy ドキュメント」。caddyserver.com。2020年 5 月 29 日時点のオリジナルよりアーカイブ。2021 年 9 月 27 日閲覧。
- ^ John Balemaric、Cricket Liu (2019)。Learning CoreDNS。「O'Reilly Media, Inc.」。ISBN 9781492047919. 2023年6月12日閲覧。
- ^ 「静的ファイルのクイックスタート - Caddy ドキュメント」。caddyserver.com。2020年 5 月 8 日時点のオリジナルよりアーカイブ。2021 年 9 月 27 日閲覧。
- ^ 「リバース プロキシ クイックスタート - Caddy ドキュメント」。caddyserver.com。2020年 5 月 8 日時点のオリジナルよりアーカイブ。2021 年 9 月 27 日閲覧。
- ^ Holt, Matthew (2015-05-27). 「Go で書かれた Web サーバー Caddy の内部を覗いてみよう」。blog.gopheracademy.com。2015-05-30 にオリジナルからアーカイブ。2021-09-27に取得。
- ^ 「Automatic HTTPS - Caddy Documentation」。caddyserver.com 。 2016年3月4日時点のオリジナルよりアーカイブ。2021年9月27日閲覧。
- ^ Jack Wallen (2022年5月26日). 「Caddyfileから単一のWebページをCaddyサーバーにデプロイする方法」. TechRepublic . 2023年6月12日閲覧。
外部リンク
- 公式サイト
