nginxでリバースプロキシを設定した翌日、以下の写真を見てしまった。

なんてことだ… nginxの時代が終わっただと?
耐えられなかった。
nginxをcaddyに再びマイグレーションすることにした。
1. caddyとは?
CaddyはGo言語で書かれたモダンなウェブサーバーであり、リバースプロキシサーバーだ。
簡単な設定、自動HTTPS、高速な性能のおかげで人気があるという。
chatgptのアドバイスによると以下の表のようになる。
項目 | Caddy | Nginx |
|---|---|---|
🛠️ 設定の難易度 | 非常に簡単 ( | 中間~難しい ( |
🔐 HTTPSサポート | 自動発行および更新 (Let's Encrypt) | 手動設定が必要 (certbotなど) |
🚀 設置と実行 | 単一実行ファイル、即座に使用可能 | パッケージのインストールが必要、設定後に実行 |
📦 基本機能 | リバースプロキシ、静的ファイル、認証、リダイレクトなど標準装備 | 多様な機能があるが、一部はモジュールのインストールが必要 |
🔧 構成の柔軟性 | 基本構造は直感的、複雑なルーティングにやや制限 | 高度に柔軟な設定 (ただし、複雑) |
📈 パフォーマンス | 高性能 (HTTP/3サポート含む) | 高性能 (大規模トラフィックで検証済み) |
📋 ドキュメントとコミュニティ | 小さいが急成長中 | 非常に大きく成熟したコミュニティ |
⚙️ 使用目的 | 迅速なデプロイ、簡単なHTTPS、開発者中心 | 高度な設定、複雑なインフラ運用 |
どうせリバースプロキシとしてポート割り当てしかしていない。
その点でcaddyの方が簡単に見えた。
2. nginxからcaddyへマイグレーションする方法
戦争に赴くローマ兵士たちは帰る船を焼くと言われる。
私もそんな気持ちでnginxをまず削除して始めた。
どうせ1日に100人も来ないホームページだから大した問題じゃない。
brew unistall nginx
そして/opt/homebrew/etcの内部に不要なフォルダを削除する。
以下のコマンドで削除してもよい。
sudo rm -rf /opt/homebrew/etc/nginx
すぐにcaddyをインストールし、Caddyfileを設定したが、なぜかうまくいかなかった。
実はnginxサービスを停止していなかったため、削除後もポートを占有していたのだ。
この記事を読む人は私のようなミスをしないようにcaddyをインストールする前に必ずポートを確認しよう。
以下のコマンドでポートを確認する。
lsofはList Open filesの略であり、-iはinternetという意味だ。
lsof -i :80
これのせいで2~3時間を無駄にした私はどれほど愚か者であったか…
ポートを停止してもうまくいかず、万国共通の解決策である再起動をした。
そして/opt/homebrew/etcフォルダの中にCaddyfileというファイルを作った。
ちなみに拡張子は不要だ。
sudo touch /opt/homebrew/etc/Caddyfile
open /opt/homebrew/etc/CaddyfileこうするとテキストエディタでCaddyfileが開く。
そしてここに以下のような内容を入力する。
example.com, www.example.com {
reverse_proxy localhost:3000
}example.comには希望するドメインを入力すればよい。
ドメインが2つの場合、カンマで区切って入力する。
nginxを使った人は知っていると思うが、設定が非常に簡単だ。
そしてcaddyサーバーを起動する。
brew services start caddy
これで不思議なことに証明書まで発行してくれる。
自動更新も可能と言うので、これから心配事が1つ減った。
3. 後記
最初にnext.jsを学んだときは、ほとんどがserver.jsでhttps設定をする記事が多かった。
なぜcaddyを教えてくれなかったのか…?
他の方法よりnginxやcaddyをインストールするのがよっぽど良い方法に思える。
それについての記事を簡単に書いてみようと思う。
댓글을 불러오는 중...