認識 Caddy:現代化、自動化 HTTPS 的輕量級 Web 伺服器

在現代的網路環境中,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 是一個極佳的選擇。它將複雜的基礎設施工作自動化,讓我們能更專注於應用程式本身的開發。