Caddy

Caddy Webサーバーについて



Caddyは、オープンソースのWebサーバーであり、特にHTTP/2|HTTP_2HTTP/3|HTTP_3のサポートに優れています。Go言語で開発されており、そのHTTP機能にはGo標準ライブラリが活用されています。このサーバーの特筆すべき点は、デフォルトでHTTPSが有効になっていることです。

Caddyの開発と歴史



Caddyの開発は、マシュー・ホルトによって2014年12月に開始され、2015年4月に初リリースされました。その後、200人以上の開発者が加わり、QUICのサポートなどの機能拡張が行われ、現在に至っています。

Caddyの主な特徴



Caddyは、以下のような様々なWeb技術をサポートしています。

  • - 対応アーキテクチャ: i386, amd64, ARM
  • - 対応OS: Windows, macOS, Linux, 各種BSD, Android, Plan 9

これらの環境向けに、静的コンパイルされたバイナリとして配布されています。

Caddyの機能詳細



Caddyは、単なるWebサーバーとしてだけでなく、リバースプロキシやロードバランサーとしても機能します。その機能の多くはGoのライブラリに由来しますが、ミドルウェアとして提供される拡張機能も豊富です。これらの機能は、Caddyfileというテキスト形式の設定ファイルを通してディレクティブで指定できます。

主な機能



  • - HTTP/1.1, HTTP/2|HTTP_2, HTTP/3|HTTP_3のサポート: 最新のプロトコルに対応し、高速な通信を可能にします。特にHTTP/2|HTTP_2HTTP/3|HTTP_3はデフォルトでHTTPS通信となります。
  • - HTTPSの自動有効化: ドメイン名があれば、Let's Encryptなどの認証局を利用して自動的にHTTPSを有効にします。
  • - TLS 1.3サポート: 最新のセキュリティプロトコルをサポートしています。
  • - SNI: 複数のSSL証明書を1つのIPアドレスでホストできます。
  • - OCSPステープリング: 証明書の有効性を高速に確認できます。
  • - 仮想ホスト: 1つのサーバーで複数のWebサイトを運用できます。
  • - IPv4/IPv6サポート: 最新のネットワーク環境に対応しています。
  • - 静的ファイル配信: sendfileを使い、高速なファイル配信を実現します。
  • - Gracefulな再起動/リロード: サービスを中断せずに設定変更を反映できます。
  • - リバースプロキシ: HTTPとWebSocketの両方をサポートします。
  • - 負荷分散: ヘルスチェックによる負荷分散が可能です。
  • - FastCGIプロキシ: PHPなどのアプリケーションを効率的に実行できます。
  • - テンプレート: サーバーサイドインクルードのような機能を提供します。
  • - Markdownレンダリング: Markdown形式のファイルをHTMLとして表示できます。
  • - WebSocketを介したCGI: WebSocketを利用した動的なコンテンツ配信を可能にします。
  • - Gzip圧縮: 通信データの圧縮により、高速なデータ転送を実現します。
  • - Basic認証: ユーザー認証を簡単に実装できます。
  • - URLリライト/リダイレクト: URLの書き換えやリダイレクトを柔軟に行えます。
  • - ファイル閲覧: Webブラウザ上でファイルを閲覧できます。
  • - ログ取得: アクセスログ、エラーログ、プロセスレベルのログを取得できます。
  • - QUICのサポート: 実験的段階ではありますが、最新のトランスポートプロトコルをサポートしています。

セキュリティ



Caddyは、Heartbleed、DROWN、POODLE、BEASTなどの既知のCVE(脆弱性情報データベース)に対して安全であるとされています。さらに、TLS_FALLBACK_SCSVを使用することでプロトコルのダウングレード攻撃を防止します。過去には、Basic認証ミドルウェアタイミング攻撃脆弱性に対処するためにパッチが適用されたこともあります。

Caddyは、TLS 1.0から1.2をサポートし、暗号スイートにはAES-256-GCM-SHA-384によるECDHE-ECDSAを標準としています。Cloudflareとの連携により、実験的なTLS 1.3通信も提供しています。

HTTPS通信の自動化



Caddyの最大の特長の一つは、HTTPS通信の自動化機能です。適切なドメイン名を持つサイトでは、ACMEプロトコルを介してTLS証明書を自動的に取得し、HTTPSを有効にします。HTTPリクエストはHTTPSにリダイレクトされます。証明書の取得と更新はCaddyが自動で行い、デフォルトの認証局はLet's Encryptです。必要に応じて他のACME認証局も利用可能です。また、「オンデマンドTLS」という機能を利用すると、TLSハンドシェイク時に必要な場合にのみ証明書を取得し、メモリにキャッシュすることも可能です。

テレメトリー機能



バージョン0.11以降、Caddyにはテレメトリー機能が搭載されています。公式Webサイトからダウンロードした場合はデフォルトで無効になっていますが、ソースコードからビルドした場合はデフォルトで有効になります。

Caddyの影響



Miek Gieben氏によって、CaddyのフォークとしてCoreDNSが作成されました。CoreDNSは、Caddyのシンプルで分かりやすい設定構文、プラグインアーキテクチャ、そしてGo言語で記述されたコードを継承しています。

外部リンク



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。