Caddy 2で簡単にhttps Webサーバー構築
この記事は
Caddy 2を使って、簡単にhttpsのWebサーバーを構築する方法を紹介します。
CaddyはGo言語で書かれたWebサーバーで、以下のような特徴があります。
- Let's Encryptを利用して自動的にSSL証明書を取得し、HTTPSを有効化
- 証明書の更新も自動で行う
- httpアクセスを自動でhttpsにリダイレクト
今回は、CaddyをHTTPS化のためのリバースプロキシーとしてのみ使用し、リクエスト処理は他の使い慣れたWebサーバー(例: nginx等)に委任する構成を紹介します。
docker composeファイルの作成
今回はdocker composeを使用してCaddy 2を実行します。以下のdocker-compose.yml
ファイルを作成します。
services:
caddy:
image: caddy:2
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./data:/data
- ./config:/config
- ./log/caddy:/var/log/caddy
restart: unless-stopped
Caddyfileの設定
次に、Caddyの設定ファイルであるCaddyfile
を作成します。以下は、リバースプロキシーとして機能する基本的な設定例です。
docker-compose.ymlと同じディレクトリにCaddyfile
を作成してください。
{
log default {
output file /var/log/caddy/caddy.log {
roll_size 10mb
roll_keep 20
roll_keep_for 720h
}
}
}
# myserver1.example.comをlocal-server1:10080に転送
myserver1.example.com {
reverse_proxy http://local-server1:10080
}
# myserver2.example.comをlocal-server2:10080に転送
# myserver2.example.com/api/*へのリクエストはlocal-api-server:10080に転送
myserver2.example.com {
reverse_proxy /api/* http://local-api-server:10080
reverse_proxy http://local-server2:10080
}
Caddyfileの書式については以下を参照してください。
Caddyの起動
Caddyを起動するには、以下のコマンドを実行します。
docker compose up -d
Caddyが起動すると、指定したドメインに対してHTTPSが有効化され、Let's Encryptを使用して自動的にSSL証明書が取得されます。
動作確認
Caddyが起動したら、設定したサーバー名(例の場合はhttps://myserver1.example.com
やhttps://myserver2.example.com
)にブラウザでアクセスして、HTTPSが正しく機能していることを確認します。
まとめ
Caddy 2を使用することで、簡単にHTTPS対応のWebサーバーを構築できます。Let's Encryptを利用して自動的にSSL証明書を取得し、証明書の更新も自動で行うため、運用が非常に楽になります。
Caddyは設定がシンプルで、リバースプロキシーとしても非常に使いやすいです。特に、複数のドメインを扱う場合でも、Caddyfileの記述が簡潔でわかりやすいのが魅力です。
Discussion