脱Cloudflare Tunnel計画で、VPSで入れているCloudflareをCaddyに置き換えようとしている。
前提

構成
構成はこんな感じ。なんか最近AIが秒で書いてくれて地味に助かる。
- ConoHa VPS 2GB RAM
- Ubuntu 24.04.3
- caddy v2.10.2
DNSの設定
ダウンタイムとかどうでもいいので、しれっと既存のレコードを削除して新たにAレコード追加する。
dig 独自ドメイン
dig 独自ドメイン @8.8.8.8次の設定をしながら反映されるのを待つ……とか思ってたら秒で反映されてびっくりした。
Caddyの設定
独自ドメイン {
reverse_proxy localhost:ポート
# 圧縮
encode zstd gzip
log {
output file /var/log/caddy/独自ドメイン.access.log
}
}
フォーマットする。
sudo caddy fmt --overwrite /etc/caddy/Caddyfile検証する。ログファイルの権限がcaddyのみなのでsudoつける。
sudo caddy validate --config /etc/caddy/Caddyfile実行する。
sudo systemctl reload caddyログ見る。
sudo journalctl -u caddy -fいつ見ても覚えづらいsystemd系統のコマンド。
ログファイルのパーミッションに注意
ログファイルは基本的にcaddyの権限となるのだが、エラーが出ていたらだいたいrootユーザになってしまっている。ユーザをなおせば大丈夫
sudo chown caddy:caddy /var/log/caddy/ログファイル(やってない)ヘッダ偽装しろという指示もあり
最初Geminiに聞いたときは、リバースプロキシするなら以下のようにヘッダかけと言われた。
独自ドメイン {
# ログを出力(トラブルシューティングに便利)
log {
output file /var/log/caddy/独自ドメイン.access.log
}
# WordPressへのリバースプロキシ
reverse_proxy localhost:ポート {
# WordPressが正しいURLを生成するために必要なヘッダー
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
}
# セキュリティ向上のための圧縮
encode gzip
}しかし今までCloudflare Tunnelでこんな設定してなかったけどなぁと思い、設定せずにやったところ、普通に動く。しかしGeminiは「いやheader_up Host {host}だけでも書きなよ」とのことだが、しかし動いているしなぁと思った。
Claudeに聞いたところ、「Caddyのreverse_proxyディレクティブは、何も指定しなくても以下のヘッダーを自動的に設定します」とのことだった。
X-Forwarded-For: クライアントのIPアドレスX-Forwarded-Proto: スキーム(http/https)X-Forwarded-Host: オリジナルのHostヘッダー
これらは標準的なリバースプロキシのヘッダーで、Caddyが「気を利かせて」自動設定している、のだとさ。
Hostヘッダーに関しては、Caddyはデフォルトでプロキシ先(バックエンド)のアドレスに設定するので、Geminiの言う通りこれは設定しないとlocalhost:ポート番号に渡されるらしい。が、これについてはWordPress側の設定でURLを定義しているので、Hostヘッダに関係なくURL生成されているんだろうね、とのこと。
なので、マルチサイト構成とかで複数ドメイン使う場合や、なんかプラグインとかで参照する必要があるならちゃんと設定した方がいいよ、でも動いているならシンプルなままでもいなじゃない、とのことだった。納得した。
所感
結局非常にシンプルな設定に落ち着いた。
半額セールで安かったからGemini使っているんだが、ChatGPTとClaudeに比べるとあまり品質はよくない気がする。ただ前にChatGPTと比べていた時には、「ChatGPTよりGeminiの無料枠のほうがマシでは」とすら思ったので、トピックによるのか、それともシードガチャなのか。
まぁよくわからんが、実際のところ確かに複数のAIに聞く、というのは経験的にはアリな気はしている。いつまでこの爆大なコストが使えるのかわからんがね。
コメント