概觀
Caddy 本質上是一個設定管理系統,可以執行各種應用程式,例如 HTTP 伺服器、TLS 憑證管理員、PKI 設施等等。它可以透過稱為設定模組的外掛程式進行擴充。
Caddy 擁有靈活且強大的 HTTP 反向代理、線上設定 API,以及強健且適合生產環境的靜態檔案伺服器,並預設透過自動 TLS 憑證在 HTTPS 上提供所有網站。
整體程式技術規格
語言
記憶體安全性保證
執行時期依賴項
編譯時間
~2 秒熱建置
部署環境
- 命令列介面
- 系統服務
- 容器
- Kubernetes
- 嵌入式
供應鏈和版本
作業系統
- Linux
- Windows
- macOS
- FreeBSD
- OpenBSD
- NetBSD
- Android
微架構
- x86 (i386, i686)
- x86-64 (AMD64)
- ARM
- ARM 64 (AArch64)
- MIPS
- MIPS64[LE]
- PPC64[LE]
- RISCV64
- S390X
- Apple Silicon (Apple ARM;M1、M2 等)
正規表示法引擎
並行模型
外掛程式模型
高階功能
組態變更
- RESTful HTTP API
- 組態檔案
- 安全的遠端存取
應用程式模組
- HTTP
- TLS
- PKI
- 事件
- 原始 TCP 和 UDP
- SSH
- PHP
- 動態 DNS
- 安全性
- 處理程序監督
- 剖析
日誌
- 分級
- 結構化
- 高效率,零配置
- 可擴充
- 刪除、篩選、塗銷和審查欄位
- IP 遮罩
- 雜湊值
- Regex 替換
儲存
- 檔案系統
- 內嵌(記憶體中)
- Postgres
- Redis
- Vault
- Consul
命令列介面
Caddy 的 CLI 不僅有用,而且有幫助。雖然大多數伺服器 CLI 僅執行處理程序並重新載入設定檔,但 Caddy 的 CLI 更進一步,幫助讓管理您的現代化網路伺服器變得輕鬆。
外掛程式可以註冊自己的子指令,以擴充 Caddy 的 CLI。
指令說明
caddy help
或 -h
存取整體指令說明或子指令說明。
man
頁面)
管理 API 包裝器
- 將設定檔調整為 JSON
- 啟動伺服器,選擇性地使用設定檔
- 優雅地重新載入設定檔
- 停止伺服器
二進制工具程式
- 詳細建置元資料
- 列出已安裝的設定檔模組
- 列出相依性
- 新增和移除外掛程式套件
- 列印版本
- 升級 Caddy 二進制檔
設定檔工具程式
- 格式化 Caddyfile
- 驗證設定檔
- 列出相依性
- 新增和移除外掛程式套件
- 列印版本
模組工具程式
- 靜態檔案伺服器
- HTTP 反向代理
- 靜態 HTTP 回應(可使用範本)
- 儲存匯入/匯出(備份/還原)
- 雜湊密碼,以與 HTTP 基本驗證搭配使用
- 匯出檔案瀏覽範本
整合工具程式
- 產生 shell 完成指令碼
- 列印環境
- 產生
man
頁面 - 將 Caddy 管理的根 CA 安裝到信任儲存區
- 從信任儲存區移除 Caddy 管理的根 CA
結束代碼
組態
我們設計 Caddy 的方式,讓它的組態不僅能存取功能,而且 本身就是一項功能。
不再爭論哪一種組態檔案格式最好:使用您想要的格式!Caddy 的組態轉接器讓您可以使用您偏好的組態格式。
原生組態格式
組態轉接器
- Caddyfile
- JSON 5
- JSON-C
- NGINX Conf
- YAML
- CUE
- TOML
- HCL
- Dhall
- MySQL
人性化的組態
匯出
組態 API
組態檔案
自動 HTTPS
我們的旗艦功能,由 CertMagic 提供支援。Caddy 是第一個也是唯一一個預設啟用 HTTPS 的主要伺服器,並會自動取得和更新您所有網站的憑證。
完全原生、整合的自動 HTTPS 遠遠優於任何需要外部工具或 cron 工作的解決方案。Caddy 的憑證維護是業界最佳,因為它比任何其他解決方案都更健壯、更可靠、更具擴充性。Caddy 簡化您的基礎架構,而不是讓它複雜化。
當然,你可以嘗試使用 Certbot 和 cron 任務部署 100,000 個網站,但如果它沒有自行中斷,那麼網路伺服器就會中斷。只有 Caddy 被設計為可以水平和垂直地大規模擴充 TLS 憑證。
永遠不再手動產生 CSR。永遠不再按一下電子郵件中的連結下載憑證。永遠不再(錯誤)設定你的網路伺服器以使用它們。永遠不再忘記在憑證到期前幾個月逐一更新憑證。你甚至不必考慮憑證或 TLS。
它真的是全自動的。
合規性
- 符合 PCI DSS
- 符合 NIST
- 符合 HIPAA
- 產業最佳實務
隨選 TLS
憑證發行者
- ACME
- 內部(自簽)
- Microsoft Active Directory 憑證服務
憑證管理員
- HTTP
- Tailscale
叢集協調
- 取得和更新憑證
- 載入現有憑證
- OCSP 釘選
- 會話票證金鑰 (STEK)
將 HTTP 重新導向到 HTTPS
OCSP
強制釘選
撤銷處理
金鑰類型
- Ed25519
- ECDSA P256
- ECDSA P384
- RSA 2048
- RSA 4096
憑證有效期
大多數 ACME 客戶端假設為 90 天憑證,或不預期憑證短於 7 天。Caddy 可以成功管理有效期為數小時和數分鐘的憑證。
Caddy 計算相對於每個憑證的壽命,稱為「更新時段比率」,而不是硬編碼在更新前的一定時間。預設情況下,Caddy 在憑證可用壽命的 2/3 後更新憑證。此比率適用於大多數有效期,但可以調整。
智慧型錯誤處理
內建節流
ACME
Caddy 的 ACME 客戶端是同類產品中的佼佼者,比現今任何其他整合式 ACME 客戶端都更可靠,且擁有更多實務經驗。Caddy 自從 Let's Encrypt 公開發行前就開始使用 ACME,而且 Caddy 與任何相容於 ACME 的 CA 都能搭配使用。
相容性
- Let's Encrypt
- ZeroSSL
- Google 信任服務
- BuyPass
- DigiCert
- GlobalSign
- SSL.com
- Smallstep
測試端點
外部帳戶繫結
挑戰類型
- HTTP-01
- TLS-ALPN-01
- DNS-01
備用挑戰埠
- HTTP(預設 80)
- TLS-ALPN(預設 443)
智慧挑戰選取
DNS 挑戰整合
- ACME-DNS
- AliDNS
- Cloudflare
- DigitalOcean
- DNSPod
- DuckDNS
- DynDNS
- EasyDNS
- Gandi
- GoDaddy
- Google Cloud DNS
- Hetzner
- Linode
- Name.com
- Namecheap
- Namesilo
- Netlify
- OVH
- Porkbun
- PowerDNS
- RFC 2136
- Route 53
- Scaleway
- Vercel
- Vultr
- 查看全部...
受信任的 CA 憑證
優先鏈
- 最小
- 根的通用名稱
- 任何通用名稱
HTTP 伺服器
Caddy 的 HTTP 伺服器獨一無二:強大、可擴充、高效且現代化。
HTTP 版本
- HTTP/1.1
- HTTP/2
- 明文傳輸的 HTTP/2 (H2C)
- HTTP/3
HTTPS
監聽介面
- TCP
- UDP
- Unix Socket
監聽器封裝器
- 在 HTTPS 埠上重新導向 HTTP
- PROXY 協定
- Tailscale
逾時
- 讀取逾時
- 讀取 HTTP 標頭逾時
- 寫入逾時
- 閒置逾時
- TCP 保持連線間隔
全雙工通訊
- 可設定為 HTTP/1
- HTTP/2 的預設值
錯誤處理
TLS 終止
- TLS 1.2
- TLS 1.3
- 用戶端驗證(TLS 互惠驗證;mTLS)
- 用戶端驗證模式:要求、需要、如果已提供則驗證、需要且驗證
- 加密套件
- 曲線
- ALPN
- 限制協定版本
- 預設 SNI
- 備用 SNI
跨網站安全性
存取日誌
- 比常見日誌格式 (CLF) 更實用
- 要求標頭(敏感欄位除外)
- 回應標頭
- 遠端 IP
- 延遲
可觀察性
要求處理
要求篩選器
- 主機
- 路徑
- 方法
- 標頭
- 協定
- 遠端 IP
- 任意 CEL 表達式
- 檔案(存在、大小、修改日期)
- HTTP 路由變數
- 邏輯 NOT
- 地理位置
- 遠端主機
HTTP 處理常式
處理常式是模組,可以組合在一起,以完全按照您想要的方式處理傳入要求。處理常式模組與 Caddy 的其他部分一樣,是可延伸且可插入的。我們無法在此列出所有處理常式。
實際上,處理常式會與比對器配對,比對器會根據各種屬性(例如路徑、標頭、查詢字串、方法等)篩選或分類要求。這讓您可以選擇性地將任何和所有這些處理常式套用到特定要求。
ACME 伺服器
Authelia
驗證
- HTTP 基本驗證
- JWT
- Discord
- 表單
- SAML
進階驗證
- 基於表單
- 本機
- 基本
- LDAP
- OpenID Connect
- OAuth 2
- SAML
快取
- Badger
- Etcd
- NutsDB
- Olric
- Redis
編碼
- Gzip
- Zstandard (zstd)
- Brotli
檔案伺服器
Go 套件虛榮路徑
gRPC-Web 橋接
標頭處理
- 新增
- 設定(覆寫)
- 刪除
- 子字串取代
影像過濾
- 裁切
- 調整大小
- 翻轉
- 縮放
- 旋轉
- 銳化
地圖
Mercure
指標
HTTP/2 伺服器推送
速率限制
- 本機或分散式
- 多個區域
- 緩衝區合併
- 僅 1 個 goroutine
- 可設定 O(Kn) 記憶體管理
- 透過重新載入保留狀態
- 設定 Retry-After 標頭
- 可選抖動
- 高度可程式化
要求主體控制
反向代理
改寫要求
- 方法
- URI(路徑、查詢字串)
- 移除路徑字首或字尾
- 正規表示式支援
- 智慧型 URL 編碼和斜線處理
靜態回應
子路由
範本
追蹤
變數
WebDAV
反向代理
Caddy 擁有世界上最靈活的通用反向代理,具備進階的請求和回應處理、動態路由、健康檢查、負載平衡、電路中斷等功能。
Caddy 的代理獨特之處在於其設計。只有代理程式面向客戶端的一面需要是 HTTP;與後端之間的往返傳輸所使用的傳輸協定可以是任何協定!
此外,我們的代理程式可以使用高度動態的上游進行編程。也就是說,可用的上游可以在進行中的請求期間變更!如果沒有可用後端,Caddy 可以保留請求,直到出現可用後端為止。
高階代理功能
傳輸
- HTTP
- FastCGI
- NTLM
負載平衡
- 隨機
- 隨機選擇 N
- 最少連線數
- 循環
- 加權循環
- 第一個可用
- 遠端 IP 雜湊
- 客戶端 IP 雜湊
- URI 雜湊
- 查詢雜湊
- 標頭雜湊
- Cookie 雜湊
電路中斷
健康檢查
- 主動
- 被動
可觀察性
上游來源
- 靜態
- 動態:A 記錄
- 動態:SRV 記錄
- 動態:結合多個來源
重試
串流
受信任的代理
標頭處理
- 新增
- 設定(覆寫)
- 刪除
- 子字串取代
緩衝
- 要求
- 回應
要求重寫
回應攔截
主動健康檢查
主動健康檢查假設後端預設為停機狀態,直到健康檢查確認為否。
HTTP 要求參數
- 路徑和查詢字串
- 埠
- 標頭
時機
成功準則
- 回應逾時
- HTTP 狀態碼
- 主體的正規表達式比對
故障安全性
被動健康檢查
被動健康檢查假設後端預設為正常,直到在代理請求過程中符合故障準則。
故障準則
- 同時請求限制超過
- HTTP 狀態
- 延遲
故障記憶體
HTTP 傳輸
這是預設的傳輸模組。它建立一個代理的 HTTP 請求,以從後端取得 HTTP 回應。
DNS 解析器
TLS
- 自訂根 CA 池
- 後端的客戶端驗證
- 自訂握手逾時
- 伺服器名稱指示器 (SNI)
- 重新協商層級
- 從 TLS 中豁免特定埠
連線池
- HTTP 保持連線
- 自訂探測間隔
- 最大閒置連線(總計和每個主機)
- 閒置連線逾時
壓縮
連線限制
PROXY 協定
逾時
- 連線(撥號)
- RFC 6555 回退
- 讀取回應標頭
- 預期繼續
- 讀取
- 寫入
自訂緩衝區大小
- 讀取緩衝區
- 寫入緩衝區
HTTP 版本
- HTTP/1.1
- HTTP/2
- H2C(明文 HTTP/2)
FastCGI 傳輸
FastCGI 通常用於透過 php-fpm 提供 PHP 應用程式服務。FastCGI 回應器可能需要有關執行中腳本的其他資訊,例如腳本名稱、相對於根目錄的路徑等,而 Caddy 的 FastCGI 傳輸會處理所有這些資訊,並使其可設定。
高效率
路徑分割
解析根目錄符號連結
環境變數
逾時
- 撥接(連線)
- 讀取
- 寫入
擷取 stderr
靜態檔案伺服器
Caddy 的檔案伺服器是為網站提供靜態檔案服務的首選方式。
很簡單:指定一個要提供檔案服務的根目錄,然後每個請求路徑會自動附加到根目錄以取得要提供服務的檔案的完整路徑。
核心加速
虛擬檔案系統
- 本地磁碟
- 嵌入式資產
- Amazon AWS S3
預先壓縮的檔案
- Gzip
- Brotli
- Zstandard
隱藏檔案和資料夾
索引檔名
有條件的要求
- Etag
- Last-Modified
- If-Match
- If-None-Match
- If-Modified-Since
- If-Unmodified-Since
- If-Range
範圍要求
標準路徑
直通模式
檔案瀏覽器
Caddy 的檔案伺服器透過其現代檔案瀏覽器而活躍起來,在行動裝置和桌上型電腦上看起來都很吸引人。它具有比任何其他標準 HTTP 檔案伺服器更多的功能和實用性!

資料夾清單
日夜主題

- 淺色模式
- 深色模式
依欄位排序
- 檔案/目錄
- 名稱
- 大小
- 修改日期
篩選

版面配置

- 清單
- 網格
回應式設計
JSON API
Accept-Encoding: application/json
標頭的請求將以 JSON 負載回覆,以透過程式或指令碼存取您的檔案清單。
可自訂的清單範本
檔案大小視覺化

檔案類型圖示


Caddy 是一個擁有大量功能的活躍專案。此頁面還不是 Caddy 提供的所有功能和好處的完整清單,因為有太多可以提到的。我們歡迎在 GitHub 上提供 貢獻!