Caddy Web Server初次小體驗
Contents
Caddy 是一款以 Go 語言撰寫的現代 Web 伺服器,最大特色是自動申請並更新 Let’s Encrypt HTTPS 憑證,設定檔語法簡潔易讀,對比 Nginx 和 Apache 的複雜設定,Caddy 的門檻相當低。
安裝 Caddy
Linux(使用官方安裝腳本)
|
|
Windows
前往 GitHub Releases 下載對應平台的執行檔,或使用 Chocolatey:
|
|
macOS
|
|
基本使用(無設定檔)
直接執行 Caddy 可快速啟動靜態檔案伺服器:
|
|
預設在目前目錄啟動,port 2015,沒有 Caddyfile 時自動使用預設設定。
Caddyfile 設定範例
Caddyfile 是 Caddy 的設定檔,語法非常簡潔。
靜態網站(本機開發)
|
|
file_server:啟用靜態檔案服務(等同 Nginx 的autoindex概念)gzip:啟用 Gzip 壓縮log:記錄存取日誌
指定 Caddyfile 路徑
|
|
自動 HTTPS(生產環境)
只要使用真實網域,Caddy 會自動向 Let’s Encrypt 申請憑證,無需任何額外設定:
|
|
反向代理(Reverse Proxy)
常見用途是將 Caddy 作為前端,將請求轉發到後端應用:
|
|
HTTP 重導向至 HTTPS
使用真實網域時,Caddy 預設會自動做 HTTP → HTTPS 重導向。若要手動設定:
|
|
目錄瀏覽(Browse)
browse 功能讓目錄以網頁列表形式呈現,類似 Apache 的 autoindex:
|
|
與 Nginx / Apache 的比較
| 特性 | Caddy | Nginx | Apache |
|---|---|---|---|
| HTTPS 自動申請 | ✅ 內建 | ❌ 需搭配 Certbot | ❌ 需搭配 Certbot |
| 設定檔複雜度 | 低 | 中 | 高 |
| 效能 | 高 | 極高 | 中 |
| 生態系成熟度 | 中 | 高 | 高 |
| HTTP/2, HTTP/3 支援 | ✅ | 需設定 | 需設定 |
Caddy v2 的更新
Caddy v2(2020 年發布)進行了大幅重寫:
- JSON API:可透過 REST API 動態修改設定,不需重啟服務
- Caddyfile 語法調整:部分指令名稱改變(如
gzip→encode gzip) - 更好的插件系統:模組化架構,功能更容易擴展
- caddy-git:可在設定更新時自動 git pull,適合靜態網站自動部署
若使用 v1 語法遇到問題,請注意版本差異並參閱官方遷移指南。