概要
Caddyは、HTTPサーバー、TLS証明書マネージャー、PKI機能など、さまざまなアプリケーションを実行できる、本質的に構成管理システムです。 configモジュールと呼ばれるプラグインで拡張できます。
Caddyは、柔軟で強力なHTTPリバースプロキシ、オンライン構成API、堅牢で本番環境対応の静的ファイルサーバーを備えており、自動TLS証明書を使用してすべてのサイトをHTTPS経由で提供します。
全体的なプログラム技術仕様
言語
メモリーセーフティの保証
ビルドアートファクト
ランタイム依存関係
コンパイル時間
ホットビルド約2秒
展開環境
- コマンドラインインターフェース
- システムサービス
- コンテナ
- Kubernetes
- 組み込み
サプライチェーンとリリース
オペレーティングシステム
- Linux
- Windows
- macOS
- FreeBSD
- OpenBSD
- NetBSD
- Android
マイクロアーキテクチャ
- x86(i386、i686)
- x86-64(AMD64)
- ARM
- ARM 64(AArch64)
- MIPS
- MIPS64[LE]
- PPC64[LE]
- RISCV64
- S390X
- Apple Silicon(Apple ARM; M1、M2など)
正規表現エンジン
同時実行モデル
プラグインモデル
高度な機能
構成変更
- RESTful HTTP API
- 設定ファイル
- 安全なリモートアクセス
アプリモジュール
- HTTP
- TLS
- PKI
- イベント
- Raw TCPとUDP
- SSH
- PHP
- 動的DNS
- セキュリティ
- プロセス監視
- プロファイリング
ログ
- レベル付き
- 構造化
- 高効率、ゼロアロケーション
- 拡張可能
- フィールドの削除、フィルタリング、改ざん、検閲
- IPマスキング
- ハッシュ値
- 正規表現置換
ストレージ
- ファイルシステム
- 組み込み(インメモリ)
- Postgres
- Redis
- Vault
- Consul
コマンドラインインターフェース
CaddyのCLIは便利であるだけでなく、役に立ちます。ほとんどのサーバーCLIは単にプロセスを実行して構成をリロードするだけですが、CaddyのCLIはさらに一歩進んで、最新のWebサーバーの管理を容易にします。
プラグインは独自のサブコマンドを登録してCaddyのCLIを拡張できます。
コマンドヘルプ
caddy help
または-h
を使用して、全体的なコマンドヘルプまたはサブコマンドヘルプにアクセスすることもできます。管理APIラッパー
- 構成をJSONに適合させる
- サーバーを起動し、必要に応じて構成を使用する
- 構成をグレースフルにリロードする
- サーバーを停止する
バイナリユーティリティ
- 詳細なビルドメタデータ
- インストールされている構成モジュールのリスト
- 依存関係のリスト
- プラグインパッケージの追加と削除
- バージョンの表示
- Caddyバイナリのアップグレード
構成ユーティリティ
- Caddyfileのフォーマット
- 構成の検証
- 依存関係のリスト
- プラグインパッケージの追加と削除
- バージョンの表示
モジュールユーティリティ
- 静的ファイルサーバー
- HTTPリバースプロキシ
- 静的HTTP応答(テンプレート可能)
- ストレージのインポート/エクスポート(バックアップ/復元)
- HTTP基本認証で使用するパスワードのハッシュ化
- ファイル参照テンプレートのエクスポート
統合ユーティリティ
- シェル補完スクリプトの生成
- 環境の表示
- manページの生成
- Caddy管理のルートCAを信頼ストアにインストールする
- Caddy管理のルートCAを信頼ストアから削除する
システムシグナル
- INT(グレースフル停止)
- QUIT
- TERM
終了コード
構成
Caddyは、その構成が機能へのアクセスを提供するだけでなく、それ自体が機能であるように設計されています。
どの構成ファイル形式が最適かについて議論する必要はもうありません。好きなものを使用してください!Caddyの構成アダプターを使用すると、好きな構成形式を使用できます。
ネイティブ構成形式
構成アダプター
- Caddyfile
- JSON 5
- JSON-C
- NGINX Conf
- YAML
- CUE
- TOML
- HCL
- Dhall
- MySQL
人間に優しい構成
エクスポート
設定 API
設定ファイル
自動 HTTPS
CertMagic によって実現された、弊社の主力機能です。Caddy は、デフォルトで HTTPS を有効にし、すべてのサイトの証明書を自動的に取得および更新する、唯一の主要なサーバーです。
完全にネイティブで統合された自動 HTTPS は、外部ツールや cron ジョブを必要とするソリューションよりもはるかに優れています。Caddy の証明書メンテナンスは、他のどのソリューションよりも堅牢で、信頼性が高く、スケーラブルであるため、業界最高です。Caddy はインフラストラクチャを複雑化させるのではなく、簡素化します。
もちろん、Certbot と cron ジョブを使用して 10 万個のサイトをデプロイしようとできますが、それ自体がクラッシュしないとしても、ウェブサーバーはクラッシュします。Caddy だけが、TLS 証明書を水平方向と垂直方向の両方で大量にスケーリングするように設計されています。
CSR を手動で生成する必要はもうありません。メールのリンクをクリックして証明書をダウンロードする必要もありません。それらを使用するためにウェブサーバーを(誤って)設定する必要もありません。数ヶ月ごとに期限が切れる前に、証明書を一つずつ更新するリマインダーを見逃すこともありません。証明書や TLS について考える必要さえありません。
まさに自動魔法です。
コンプライアンス
- PCI DSS 準拠
- NIST 準拠
- HIPAA 準拠
- 業界ベストプラクティス
オンデマンド TLS
証明書発行者
- ACME
- 内部(自己署名)
- Microsoft Active Directory Certificate Services
証明書マネージャー
- HTTP
- Tailscale
クラスタ調整
- 証明書の取得と更新
- 既存の証明書の読み込み
- OCSP ステープル
- セッションチケットキー (STEK)
HTTP から HTTPS へのリダイレクト
OCSP
Must-Staple
失効処理
セッションチケットの強化
キーの種類
- Ed25519
- ECDSA P256
- ECDSA P384
- RSA 2048
- RSA 4096
証明書の有効期間
ほとんどの ACME クライアントは 90 日間の証明書を想定するか、7 日間未満の証明書を想定していません。Caddy は、時間と分の単位で有効期間を持つ証明書を正常に管理できます。
更新前に特定の期間をハードコーディングする代わりに、Caddy は各証明書の寿命に関連する期間を計算します。これは更新ウィンドウ比率と呼ばれます。デフォルトでは、Caddy は使用可能な寿命の 2/3 後に証明書を更新します。この比率はほとんどの有効期間に有効ですが、調整できます。
インテリジェントなエラー処理
組み込みのスロットリング
ACME
Caddy の ACME クライアントは、現在利用可能な他の統合 ACME クライアントよりも信頼性が高く、本番環境での経験が豊富です。Caddy は Let's Encrypt の一般公開前から ACME を使用しており、Caddy は ACME 互換の CA で動作します。
互換性
- Let's Encrypt
- ZeroSSL
- Google Trust Services
- BuyPass
- DigiCert
- GlobalSign
- SSL.com
- Smallstep
テストエンドポイント
外部アカウントバインディング
チャレンジの種類
- HTTP-01
- TLS-ALPN-01
- DNS-01
代替チャレンジポート
- HTTP(デフォルト 80)
- TLS-ALPN(デフォルト 443)
スマートチャレンジの選択
DNS チャレンジ統合
- ACME-DNS
- AliDNS
- Cloudflare
- DigitalOcean
- DNSPod
- DuckDNS
- DynDNS
- EasyDNS
- Gandi
- GoDaddy
- Google Cloud DNS
- Hetzner
- Linode
- Name.com
- Namecheap
- Namesilo
- Netlify
- OVH
- Porkbun
- PowerDNS
- RFC 2136
- Route 53
- Scaleway
- Vercel
- Vultr
- すべてを見る...
信頼できる CA 証明書
優先チェーン
- 最小
- ルートの CommonName
- 任意の CommonName
HTTP サーバー
Caddy の HTTP サーバーは、強力で、拡張性が高く、効率的で、最新のものです。
HTTP バージョン
- HTTP/1.1
- HTTP/2
- クリアテキスト上の HTTP/2 (H2C)
- HTTP/3
HTTPS
リスンインターフェース
- TCP
- UDP
- Unix ソケット
リスナーラッパー
- HTTPS ポートで HTTP をリダイレクト
- PROXY プロトコル
- Tailscale
タイムアウト
- 読み取りタイムアウト
- HTTP ヘッダーの読み取りタイムアウト
- 書き込みタイムアウト
- アイドルタイムアウト
- TCP キープアライブ間隔
全二重通信
- HTTP/1 で設定可能
- HTTP/2 のデフォルト
エラー処理
TLS ターミネーション
- TLS 1.2
- TLS 1.3
- クライアント認証(TLS 相互認証; mTLS)
- クライアント認証モード:リクエスト、必須、指定された場合の検証、必須かつ検証
- 暗号スイート
- カーブ
- ALPN
- プロトコルバージョンの制限
- デフォルト SNI
- フォールバック SNI
クロスサイトセキュリティ
アクセスログ
- 共通ログ形式(CLF)よりも有用
- リクエストヘッダー(機密フィールドを除く)
- レスポンスヘッダー
- リモートIP
- レイテンシ
可観測性
リクエスト処理
リクエストフィルター
- ホスト
- パス
- メソッド
- ヘッダー
- プロトコル
- リモートIP
- 任意のCEL式
- ファイル(存在、サイズ、変更日時)
- HTTPルート変数
- 論理否定
- 位置情報
- リモートホスト
HTTPハンドラー
ハンドラーは、着信リクエストを正確に希望する通りに処理するために、組み合わせて使用できるモジュールです。ハンドラーモジュールは、Caddyの他の部分と同様に、拡張可能でプラグイン可能です。ここにすべてのハンドラーをリストアップすることは現実的ではありません。
実際には、ハンドラーは、パス、ヘッダー、クエリ文字列、メソッドなど、様々なプロパティに基づいてリクエストをフィルタリングまたは分類するマッチャーとペアになっています。これにより、これらのハンドラーのすべてまたは一部を特定のリクエストに選択的に適用できます。
ACMEサーバー
Authelia
認証
- HTTP Basic認証
- JWT
- Discord
- フォーム
- SAML
高度な認証
- フォームベース
- ローカル
- 基本
- LDAP
- OpenID Connect
- OAuth 2
- SAML
キャッシュ
- Badger
- Etcd
- NutsDB
- Olric
- Redis
エンコード
- Gzip
- Zstandard (zstd)
- Brotli
ファイルサーバー
Goパッケージバニティパス
gRPC-Webブリッジング
ヘッダー操作
- 追加
- 設定(上書き)
- 削除
- 部分文字列置換
画像フィルタリング
- トリミング
- フィット
- 反転
- リサイズ
- 回転
- シャープニング
マップ
Mercure
メトリクス
HTTP/2サーバープッシュ
レート制限
- ローカルまたは分散
- 複数のゾーン
- バッファー・プーリング
- ゴルーチンは1つだけ
- 構成可能なO(Kn)メモリ管理
- リロードによる状態の永続化
- Retry-Afterヘッダーの設定
- オプションのジッター
- 高度にプログラム可能
リクエストボディ制御
リバースプロキシ
リクエストの書き換え
- メソッド
- URI(パス、クエリ文字列)
- パスのプレフィックスまたはサフィックスの削除
- 正規表現のサポート
- インテリジェントなURLエンコードとフォワードスラッシュの処理
静的レスポンス
サブルーティング
テンプレート
トレース
変数
WebDAV
リバースプロキシ
Caddyは、世界で最も柔軟な汎用リバースプロキシであり、高度なリクエストとレスポンス処理、動的ルーティング、ヘルスチェック、ロードバランシング、サーキットブレーカーなどを備えています。
Caddyのプロキシをユニークにしているのは、その設計です。プロキシのクライアント側のみにHTTPが必要であり、バックエンドとのラウンドトリップを支えるトランスポートは、任意のプロトコルで実現できます!
さらに、プロキシは非常に動的なアップストリームでプログラムできます。つまり、利用可能なアップストリームは、処理中のリクエスト中に変更できます!バックエンドが利用できない場合、Caddyはバックエンドが利用可能になるまでリクエストを保持できます。
ハイレベルプロキシ機能
トランスポート
- HTTP
- FastCGI
- NTLM
ロードバランシング
- ランダム
- ランダム選択-N
- 最小接続数
- ラウンドロビン
- 加重ラウンドロビン
- 最初に利用可能なもの
- リモートIPハッシュ
- クライアントIPハッシュ
- URIハッシュ
- クエリハッシュ
- ヘッダーハッシュ
- Cookieハッシュ
サーキットブレーカー
ヘルスチェック
- アクティブ
- パッシブ
可観測性
アップストリームソース
- 静的
- 動的:Aレコード
- 動的:SRVレコード
- 動的:複数のソースの組み合わせ
再試行
ストリーミング
信頼できるプロキシ
ヘッダー操作
- 追加
- 設定(上書き)
- 削除
- 部分文字列置換
バッファリング
- リクエスト
- レスポンス
リクエストの書き換え
レスポンスのインターセプト
アクティブヘルスチェック
アクティブヘルスチェックは、ヘルスチェックによってそれ以外が確認されるまで、デフォルトでバックエンドがダウンしていると想定します。
HTTPリクエストパラメーター
- パスとクエリ文字列
- ポート
- ヘッダー
タイミング
成功基準
- レスポンスタイムアウト
- HTTPステータスコード
- ボディへの正規表現の一致
障害時の安全性
パッシブヘルスチェック
パッシブヘルスチェックは、プロキシリクエスト中に障害基準を満たすまで、バックエンドがデフォルトで稼働していると仮定します。
障害基準
- 同時リクエスト制限超過
- HTTPステータス
- レイテンシ
障害メモリ
HTTPトランスポート
これはデフォルトのトランスポートモジュールです。バックエンドからHTTPレスポンスを取得するために、プロキシされたHTTPリクエストを作成します。
DNSリゾルバ
TLS
- カスタムルートCAプール
- バックエンドへのクライアント認証
- カスタムハンドシェイクタイムアウト
- サーバーネームインジケーター(SNI)
- 再交渉レベル
- 特定のポートをTLSから除外
接続プーリング
- HTTP Keep-Alive
- カスタムプローブ間隔
- 最大アイドル接続数(合計およびホストごと)
- アイドル接続タイムアウト
圧縮
接続制限
PROXYプロトコル
タイムアウト
- 接続(ダイヤル)
- RFC 6555フォールバック
- レスポンスヘッダーの読み取り
- Expect continue
- 読み取り
- 書き込み
カスタムバッファサイズ
- 読み取りバッファ
- 書き込みバッファ
HTTP バージョン
- HTTP/1.1
- HTTP/2
- H2C(クリアテキスト上のHTTP/2)
FastCGIトランスポート
FastCGIは通常、php-fpmを介してPHPアプリケーションを提供するために使用されます。FastCGIレスポンダは、スクリプト名、ルートからの相対パスなど、実行中のスクリプトに関する追加情報が必要になる場合があり、CaddyのFastCGIトランスポートはそれらすべてを処理し、設定可能にします。
高効率
パス分割
ルートシンボリックリンクの解決
環境変数
タイムアウト
- ダイヤル(接続)
- 読み取り
- 書き込み
stderrのキャプチャ
静的ファイルサーバー
Caddyのファイルサーバーは、ウェブサイトの静的ファイルを配信するための主要な方法です。
シンプルです。ファイルを配信するルートディレクトリを指定すると、各リクエストパスは自動的にルートに追加されて、配信するファイルのフルパスを取得します。
カーネルアクセラレーション
仮想ファイルシステム
- ローカルディスク
- 埋め込みアセット
- Amazon AWS S3
事前に圧縮されたファイル
- Gzip
- Brotli
- Zstandard
ファイルとフォルダーの非表示
インデックスファイル名
条件付きリクエスト
- Etag
- Last-Modified
- If-Match
- If-None-Match
- If-Modified-Since
- If-Unmodified-Since
- If-Range
範囲リクエスト
正規パス
パススルーモード
ファイルブラウザ
Caddyのファイルサーバーは、モバイルとデスクトップで魅力的に見える最新のファイルブラウザを通じて動作します。他の標準的なHTTPファイルサーバーよりも多くの機能とユーティリティがあります!

フォルダーリスト
昼夜テーマ

- ライトモード
- ダークモード
列でソート
- ファイル/ディレクトリ
- 名前
- サイズ
- 変更日時
フィルター

レイアウト

- リスト
- グリッド
レスポンシブデザイン
JSON API
Accept-Encoding: application/json
ヘッダー付きのリクエストには、JSONペイロードで応答され、ファイルリストへのプログラムによるアクセスまたはスクリプトによるアクセスが可能になります。カスタマイズ可能なリストテンプレート
ファイルサイズ可視化

ファイルタイプアイコン


Caddyは、多くの機能を備えた活発なプロジェクトです。このページは、言及すべきことが多すぎるため、Caddyによって提供されるすべての機能と利点を網羅したリストではありません。GitHubへの貢献を歓迎します!