nginxからcaddyへのマイグレーション

힘센캥거루
2025년 5월 25일(수정됨)
69
nextjs

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

nginxからcaddyへのマイグレーション-1

なんてことだ… nginxの時代が終わっただと?

耐えられなかった。

nginxをcaddyに再びマイグレーションすることにした。

1. caddyとは?

CaddyはGo言語で書かれたモダンなウェブサーバーであり、リバースプロキシサーバーだ。

簡単な設定、自動HTTPS、高速な性能のおかげで人気があるという。

chatgptのアドバイスによると以下の表のようになる。

項目

Caddy

Nginx

🛠️ 設定の難易度

非常に簡単 (Caddyfile)

中間~難しい (nginx.conf)

🔐 HTTPSサポート

自動発行および更新 (Let's Encrypt)

手動設定が必要 (certbotなど)

🚀 設置と実行

単一実行ファイル、即座に使用可能

パッケージのインストールが必要、設定後に実行

📦 基本機能

リバースプロキシ、静的ファイル、認証、リダイレクトなど標準装備

多様な機能があるが、一部はモジュールのインストールが必要

🔧 構成の柔軟性

基本構造は直感的、複雑なルーティングにやや制限

高度に柔軟な設定 (ただし、複雑)

📈 パフォーマンス

高性能 (HTTP/3サポート含む)

高性能 (大規模トラフィックで検証済み)

📋 ドキュメントとコミュニティ

小さいが急成長中

非常に大きく成熟したコミュニティ

⚙️ 使用目的

迅速なデプロイ、簡単なHTTPS、開発者中心

高度な設定、複雑なインフラ運用

どうせリバースプロキシとしてポート割り当てしかしていない。

その点でcaddyの方が簡単に見えた。

2. nginxからcaddyへマイグレーションする方法

戦争に赴くローマ兵士たちは帰る船を焼くと言われる。

私もそんな気持ちでnginxをまず削除して始めた。

どうせ1日に100人も来ないホームページだから大した問題じゃない。

brew unistall nginx
nginxからcaddyへのマイグレーション-2

そして/opt/homebrew/etcの内部に不要なフォルダを削除する。

以下のコマンドで削除してもよい。

sudo rm -rf /opt/homebrew/etc/nginx
nginxからcaddyへのマイグレーション-3

すぐにcaddyをインストールし、Caddyfileを設定したが、なぜかうまくいかなかった。

実はnginxサービスを停止していなかったため、削除後もポートを占有していたのだ。

この記事を読む人は私のようなミスをしないようにcaddyをインストールする前に必ずポートを確認しよう。

以下のコマンドでポートを確認する。

lsofList Open filesの略であり、-iinternetという意味だ。

lsof -i :80
nginxからcaddyへのマイグレーション-4

これのせいで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をインストールするのがよっぽど良い方法に思える。

それについての記事を簡単に書いてみようと思う。

댓글을 불러오는 중...