Caddy(ウェブ​​サーバー)

キャディー
原作者マシュー・ホルト
初回リリース2015年4月28日 (2015年4月28日
安定版リリース
2.10.2 [ 1 ] ウィキデータで編集する / 2025年8月23日 (2025年8月23日
リポジトリgithub .com /caddyserver /caddy
書かれた囲碁[ 2 ]
オペレーティング·システムBSD 系LinuxPlan 9macOSWindows
プラットフォームIA-32 (i386)、x86-64ARMMIPSS390X
タイプWebサーバーリバースプロキシサーバー
ライセンスアパッチ2
Webサイトキャディサーバー.comWikidataで編集する

Caddy は、 Goで書かれた、拡張可能なクロスプラットフォームのオープンソースWeb サーバーです。

「Caddy」という名前は、面倒な作業を補助するヘルパーであると同時に、複数の部分を簡素化したシステムに整理する方法という意味も持ちます。[ 3 ] Caddyは、REST APIを使ってオンラインで更新できる単一の統合構成を使用して、長期実行サービス(「アプリ」)を展開するための拡張可能なプラットフォームです。[ 4 ] Caddyの公式ディストリビューションには、 HTTPサーバーTLS自動化、PKIアプリなどの標準モジュールセットが付属しています。[ 5 ] Caddyは、自動HTTPS機能で最もよく知られています。[ 6 ] [ 7 ]

建築

Caddyは、コマンド、コアライブラリ、構成モジュールの3つの主要コンポーネントで構成されています。[ 8 ]コマンドは、プログラムを実行するための拡張可能なインターフェースです。また、構成ファイルのロード、共通モードの実行、インストールされたプラグインの管理、関連するユーティリティ関数の提供も行えます。コアライブラリには、構成のロード、アンロード、管理を行うAPIがありますが、[ 9 ]コアライブラリ自体は特に便利な機能はありません。Caddyの機能のほとんどは、Caddyの構成構造を拡張するプラグインであるモジュールによって提供されています。たとえば、HTTPサーバーはモジュールです。[ 10 ] Caddyモジュールは、さまざまな長期サービス、Web標準、その他の便利な機能を実装しています。

Caddyの入力はJSON設定ドキュメント[ 11 ]であり、RESTful HTTP APIを介してオープンソケット経由で受信されます。[ 12 ] [ 6 ] HTTPクライアントがない場合、Caddyのコマンドラインインターフェースを使用して設定ファイルを読み込むことができます。[ 13 ]設定アダプタを使用して、他の設定形式をJSONに変換できます。既存のアダプタには、コマンドラインでファーストクラスのサポートを持つCaddyfile、YAMLTOMLNginx、その他の形式が含まれます。[ 14 ] [ 6 ]

管理ソケットを介して設定情報を受信すると、Caddyは指定されたすべてのモジュールの設定情報をデコードし、すべてのアプリモジュールの実行を開始します。[ 6 ]アプリモジュールがプロビジョニングされる際に、アプリモジュール自体が使用するモジュールをロードしてプロビジョニングすることがあります。例えば、HTTPサーバーはHTTPリクエストを処理するためにHTTPハンドラーモジュールを使用するアプリモジュールです。これらのハンドラーは、機能を実装するためにさらに他のモジュールを使用する場合があります。[ 15 ]これらのモジュールはすべて、設定ロードフェーズでプロビジョニングされます。[ 8 ]

プラグインは、Caddyバイナリに直接静的にコンパイルすることでインストールされます。[ 3 ] [ 6 ]プラグインがない場合、Caddyのネイティブ構成構造には、管理とログ記録のための基本的なオプションのみが存在します。[ 11 ]その他の機能はすべてアプリモジュールによって提供される必要があります。公式のCaddyディストリビューションには、数十の標準モジュールが同梱されています。[ 5 ]その他のモジュールは、プロジェクトのウェブサイトから追加するか、[ 16 ]コマンドラインツールを使用するxcaddyか、カスタムビルドを手動でコンパイルすることで追加できます。[ 17 ] [ 18 ]

HTTPサーバー

HTTPサーバーは、公式Caddyディストリビューションに標準で付属するアプリモジュールです。[ 10 ]主に静的ファイルサーバー[ 19 ]と負荷分散リバースプロキシとして使用されます。[ 20 ] CaddyのHTTP機能の基本はGoの標準ライブラリの実装を使用していますが、[ 21 ]さまざまな拡張機能とカスタマイズがミドルウェアとして利用可能であり、構成パラメータを通じて公開されています。[ 6 ]

自動HTTPS

デフォルトでは、ルートに空でないホストマッチャーがある場合、自動的にTLSが使用されます。[ 22 ]これらはCaddyがサービスを提供しているサイト名またはIPアドレスとみなされるため、Caddyは設定されたホスト名とIPアドレスの証明書を自動的に取得・更新します。このように自動HTTPSが有効化されると、CaddyはHTTPリクエストを対応するHTTPSの場所にリダイレクトします。[ 23 ]

CaddyはTLS証明書を自動的に取得するために、自動証明書管理環境プロトコルを実装し、 Let's Encryptなどのサービスと通信できるようにしています。[ 24 ]

発達

Caddyプロジェクトの最初のgitコミットは2014年でした。[ 25 ]

Caddyバージョン1.0は2019年4月24日にリリースされました。[ 25 ]その時点で、プロジェクトには250人以上の貢献者がいました。[ 25 ]

Caddyバージョン2は2020年5月5日にリリースされました。[ 7 ] Ars Technicaのレビュー担当者によると、バージョン2の設定形式はCaddyの以前のメジャーリリースとはほとんど互換性がありませんが、 Apache Web Serverよりも設定ファイルの構文がシンプルになっているとのことです。[ 7 ] [ 26 ]

デリバティブ

- CoreDNS 、クラウドネイティブコンピューティング財団のプロジェクト。[ 27 ]

参考文献

  1. ^ 「リリース 2.10.2」 2025年8月23日. 2025年9月14日閲覧
  2. ^ Gerrand, Andrew (2016年2月17日). 「Go 1.6がリリースされました」 . golang.org . 2016年3月5日閲覧。
  3. ^ a b README.md、GitHub の caddyserver/caddy、2021-09-27、2021-09-27取得
  4. ^ 「Welcome - Caddy Documentation」 . caddyserver.com . 2015年5月2日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  5. ^ a b imports.go、 caddyserver/caddy on GitHub、2021-09-27 、 2021-09-27取得
  6. ^ a b c d e f Woodbeck, Adam (2021). 『GOによるネットワークプログラミング:安全で信頼性の高いネットワークサービスをスクラッチからコーディングする』サンフランシスコ、カリフォルニア州. pp.  217– 239. ISBN 978-1-7185-0088-4. OCLC  1198449668 .{{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク)
  7. ^ a b c Jim Salter (2020年5月6日). 「CaddyはTLS、HTTPS、その他多くの機能を1つの依存関係のないGoウェブサーバーで提供します」 . Ars Technica . 2023年6月12日閲覧。
  8. ^ a b「アーキテクチャ - Caddyドキュメント」 . caddyserver.com . 2020年4月14日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  9. ^ Wallen, Jack (2022年5月19日). 「Ubuntu Server 22.04にCaddyウェブサーバーをインストールする方法」 . TechRepublic . 2025年9月17日閲覧
  10. ^ a b「Module http - Caddy Documentation」 . caddyserver.com . 2020年5月6日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  11. ^ a b「JSON Config Structure - Caddy Documentation」 . caddyserver.com . 2020年4月14日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  12. ^ 「API - Caddyドキュメント」 . caddyserver.com . 2020年3月2日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  13. ^ 「コマンドライン - Caddyドキュメント」 . caddyserver.com . 2020年3月2日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  14. ^ 「Config Adapters - Caddy Documentation」 . caddyserver.com . 2020年4月14日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  15. ^ Holt, Matthew (2019-12-04) 「長時間実行される Go プログラムのエンジニアリング上の課題」 Forge Utah 、 2021年9月27日閲覧。
  16. ^ 「Caddyをダウンロード」 caddyserver.com . 2015年5月2日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  17. ^ 「ソースからのビルド - Caddyドキュメント」caddyserver.com . 2020年5月29時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  18. ^ Walker, James (2022年3月11日). 「DockerでCaddy Webサーバーをデプロイする方法」 How -To Geek . 2025年9月17日閲覧
  19. ^ 「静的ファイルのクイックスタート - Caddyドキュメント」caddyserver.com . 2020年5月8日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  20. ^ 「リバースプロキシのクイックスタート - Caddyドキュメント」caddyserver.com . 2020年5月8日時点のオリジナルよりアーカイブ2021年9月27日閲覧
  21. ^ Holt, Matthew (2015年5月27日). 「Goで書かれたWebサーバー、Caddyの内部を覗いてみよう」 . blog.gopheracademy.com . 2015年5月30日時点のオリジナルよりアーカイブ。 2021年9月27日閲覧
  22. ^ 「Automatic HTTPS - Caddy Documentation」 . caddyserver.com . 2016年3月4日時点のオリジナルよりアーカイブ2021年9月27日閲覧。
  23. ^ 「Caddy — 最新のウェブサーバー(nginxと比較) | HackerNoon」 HackerNoon 2017年1月9日2025年9月17日閲覧
  24. ^ Warren, Brad (2024年3月7日). 「CaddyとTraefikはCertbotに代わるべきか?」 .電子フロンティア財団. 2025年9月10日閲覧
  25. ^ a b c Holt, Matt (2019年4月24日). “Announcement Caddy 1.0, Caddy 2, and Caddy Enterprise” . 2019年4月25日時点のオリジナルよりアーカイブ。 2025年9月17日閲覧
  26. ^ Jack Wallen (2022年5月26日). 「CaddyfileからCaddyサーバーに単一のWebページを展開する方法」 . TechRepublic . 2023年6月12日閲覧
  27. ^ジョン・バレマリック、クリケット・リュー (2019). Learning CoreDNS . O'Reilly Media, Inc.. ISBN 9781492047919. 2023年6月12日閲覧