概觀
Caddy 本質上是一個組態管理系統,可以執行各種應用程式,例如 HTTP 伺服器、TLS 憑證管理器、PKI 設施等等。它可以使用稱為組態模組的外掛程式進行擴充。
Caddy 具有彈性且強大的 HTTP 反向代理、線上組態 API,以及穩健、可供生產環境使用的靜態檔案伺服器,並且預設透過 HTTPS 以及自動 TLS 憑證為所有網站提供服務。
整體程式技術規格
語言
記憶體安全保證
執行階段依賴項
編譯時間
約 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 Stapling
- 會話票證金鑰 (STEK)
將 HTTP 重新導向到 HTTPS
OCSP
Must-Staple
撤銷處理
金鑰類型
- Ed25519
- ECDSA P256
- ECDSA P384
- RSA 2048
- RSA 4096
憑證生命週期
大多數 ACME 客戶端都假定憑證為 90 天,或者不期望憑證短於 7 天。Caddy 可以成功管理生命週期為數小時和數分鐘的憑證。
Caddy 沒有硬式編碼在特定期限前續訂,而是計算相對於每個憑證生命週期的期限,稱為續訂窗口比率。預設情況下,Caddy 會在憑證可用生命週期的 2/3 後續訂憑證。此比率適用於大多數有效期,但可以調整。
智慧型錯誤處理
內建節流
ACME
Caddy 的 ACME 客戶端是同類產品中最好的,具有比目前任何其他整合 ACME 客戶端更高的可靠性和更多的生產經驗。自 Let's Encrypt 公開發布之前,Caddy 就一直在使用 ACME,並且 Caddy 可以與任何相容 ACME 的 CA 搭配使用。
相容性
- Let's Encrypt
- ZeroSSL
- Google Trust Services
- 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 憑證
偏好的鏈
- 最小
- 根的 CommonName
- 任何的 CommonName
續訂排程
- 內部
- ARI
HTTP 伺服器
Caddy 的 HTTP 伺服器是獨一無二的:強大、可擴充、高效且現代化。
HTTP 版本
- HTTP/1.1
- HTTP/2
- 透過明文的 HTTP/2 (H2C)
- HTTP/3
HTTPS
監聽介面
- TCP
- UDP
- Unix 套接字
監聽器包裝器
- 在 HTTPS 埠上重新導向 HTTP
- PROXY 協定
- Tailscale
逾時
- 讀取逾時
- 讀取 HTTP 標頭逾時
- 寫入逾時
- 閒置逾時
- TCP Keep-Alive 間隔
全雙工通訊
- 可為 HTTP/1 組態
- HTTP/2 的預設值
錯誤處理
TLS 終止
- TLS 1.2
- TLS 1.3
- 客戶端身份驗證(TLS 相互身份驗證;mTLS)
- 客戶端身份驗證模式:請求、要求、如果給定則驗證、要求並驗證
- 密碼套件
- 曲線
- ALPN
- 限制協定版本
- 預設 SNI
- 後備 SNI
跨站安全性
存取日誌
- 比通用日誌格式 (CLF) 更有用
- 請求標頭(敏感欄位除外)
- 回應標頭
- 遠端 IP
- 延遲
可觀測性
請求處理
請求篩選器
- Host
- 路徑
- 方法
- 標頭
- 協定
- 遠端 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 標頭
- 可選的抖動
- 高度可程式化
請求 body 控制
反向代理
重寫請求
- 方法
- URI (路徑、查詢字串)
- 移除路徑前綴或後綴
- 正規表示式支援
- 智慧型 URL 編碼和正斜線處理
靜態回應
子路由
範本
追蹤
變數
WebDAV
反向代理
Caddy 擁有世界上最靈活的通用反向代理,具有進階的請求和回應處理、動態路由、健康檢查、負載平衡、斷路等功能。
Caddy 代理獨特之處在於其設計。只有代理面向用戶端的一側需要是 HTTP;與後端往返傳輸的底層可以使用任何協定來完成!
此外,我們的代理可以使用高度動態的上游伺服器進行程式設計。也就是說,可用的上游伺服器可以在進行中的請求期間變更!如果沒有可用的後端,Caddy 可以保留請求直到有一個後端可用。
高階代理功能
傳輸
- HTTP
- FastCGI
- NTLM
負載平衡
- 隨機
- 隨機選擇 N 個
- 最少連線數
- 循環配置資源
- 加權循環配置資源
- 第一個可用
- 遠端 IP hash
- 用戶端 IP hash
- URI hash
- 查詢 hash
- 標頭 hash
- Cookie hash
斷路
健康檢查
- 主動
- 被動
可觀測性
上游來源
- 靜態
- 動態:A 記錄
- 動態:SRV 記錄
- 動態:多個來源組合
重試
串流
受信任的代理
標頭操作
- 新增
- 設定 (覆寫)
- 刪除
- 子字串取代
緩衝
- 請求
- 回應
請求重寫
回應攔截
主動健康檢查
主動健康檢查預設假定後端已關閉,直到透過健康檢查確認為止。
HTTP 請求參數
- 路徑 & 查詢字串
- 埠
- 標頭
計時
成功標準
- 回應逾時
- HTTP 狀態碼
- body 上的正規表示式比對
失敗安全
被動健康檢查
被動健康檢查預設假定後端已啟動,直到在代理請求過程中滿足失敗標準為止。
失敗標準
- 超出並行請求限制
- HTTP 狀態
- 延遲
失敗記憶體
HTTP 傳輸
這是預設的傳輸模組。它會建立代理的 HTTP 請求,以從後端取得 HTTP 回應。
DNS 解析器
TLS
- 自訂根 CA 池
- 用戶端向後端驗證
- 自訂握手逾時
- 伺服器名稱指示 (SNI)
- 重新協商層級
- 從 TLS 中排除某些埠
連線池化
- HTTP Keep-Alive
- 自訂探測間隔
- 最大閒置連線數 (總數和每個主機)
- 閒置連線逾時
壓縮
連線限制
PROXY 協定
逾時
- 連線 (撥號)
- RFC 6555 後備
- 讀取回應標頭
- Expect-continue
- 讀取
- 寫入
自訂緩衝區大小
- 讀取緩衝區
- 寫入緩衝區
HTTP 版本
- HTTP/1.1
- HTTP/2
- H2C (透過明文的 HTTP/2)
FastCGI 傳輸
FastCGI 通常用於透過 php-fpm 服務 PHP 應用程式。FastCGI 回應器可能需要關於正在執行的腳本的其他資訊,例如腳本名稱、相對於根目錄的路徑等,而 Caddy 的 FastCGI 傳輸會處理所有這些,並使其可配置。
高效
路徑分割
解析根符號連結
環境變數
逾時
- 撥號 (連線)
- 讀取
- 寫入
捕獲 stderr
靜態檔案伺服器
Caddy 的檔案伺服器是為您的網站服務靜態檔案的首選方式。
這很簡單:指定一個根目錄來服務檔案,然後每個請求路徑都會自動附加到根目錄,以取得要服務的檔案的完整路徑。
核心加速
虛擬檔案系統
- 本機磁碟
- 嵌入式資產
- Amazon AWS S3
預先壓縮的檔案
- Brotli
- Zstandard
- Gzip
隱藏檔案和資料夾
索引檔案名稱
條件請求
- Etag
- Last-Modified
- If-Match
- If-None-Match
- If-Modified-Since
- If-Unmodified-Since
- If-Range
範圍請求
標準路徑
Pass-thru 模式
檔案瀏覽器
Caddy 的檔案伺服器透過其現代化的檔案瀏覽器而生動起來,該瀏覽器在行動裝置和桌面上看起來都很有吸引力。它比任何其他標準 HTTP 檔案伺服器都具有更多功能和實用性!

資料夾列表
日夜主題

- 淺色模式
- 深色模式
依欄排序
- 檔案/資料夾
- 名稱
- 大小
- 修改日期
篩選

版面配置

- 列表
- 網格
響應式設計
JSON API
Accept-Encoding: application/json
標頭的請求將以 JSON payload 回覆,以便以程式化或腳本方式存取您的檔案列表。可自訂的列表範本
檔案大小視覺化

檔案類型圖示


Caddy 是一個持續發展的專案,具有大量功能。此頁面尚未全面列出 Caddy 提供的所有功能和優點,因為有太多值得一提。我們歡迎在 GitHub 上貢獻!