在現代的網路環境中,HTTPS 已經成為標配。然而,傳統的 Web 伺服器(如 Nginx 或 Apache)在設定 SSL 憑證時,通常需要安裝 Certbot、設定 Cron Job 並手動配置憑證路徑,過程相對繁瑣。而 Caddy 的出現,徹底改變了這個流程。
Caddy 是什麼?
Caddy 是一個用 Go 語言編寫的開源 Web 伺服器。它最核心的特點是 「預設即 HTTPS」。Caddy 內建了自動化管理 TLS 憑證的功能,能夠自動從 Let’s Encrypt 或 ZeroSSL 申請、安裝並續期憑證,無需任何額外插件。
Caddy 的主要優點
- 自動化 HTTPS:只要你有對應的域名指向 Caddy 伺服器,它會在啟動時自動完成所有憑證申請流程。
- 設定極其簡潔:使用名為
Caddyfile的設定檔,寥寥數行即可完成反向代理(Reverse Proxy)與 HTTPS 設定。 - 單一執行檔:由於是用 Go 編寫,Caddy 編譯後是一個單獨的二進位檔,沒有複雜的依賴關係,部署極快。
- 高效能:在處理靜態檔案與反向代理時表現優異,且記憶體佔用低。
如何使用 Docker 容器運行 Caddy
使用 Docker 運行 Caddy 是最推薦的方式,可以保持主機環境乾淨且易於維護。
1. 建立 Caddyfile
在本地建立一個名為 Caddyfile 的檔案,內容如下(以反向代理 WordPress 為例):
example.com {
reverse_proxy localhost:8080
}
2. 使用 Docker Compose 啟動
建立 docker-compose.yml:
services:
caddy:
image: caddy:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
3. 啟動伺服器
執行 docker compose up -d 即可。Caddy 會自動偵測域名並開始申請 HTTPS 憑證。
結語
對於追求快速部署、不想被憑證續期困擾的開發者或伺服器管理員來說,Caddy 是一個極佳的選擇。它將複雜的基礎設施工作自動化,讓我們能更專注於應用程式本身的開發。