專案狀態
📌 發行版本
Section titled “📌 發行版本”目前版本是 v0.2.0-rc.3,屬於 release candidate。它的發行說明列出變更內容,以及標記版本時已知的缺陷。
v0.1.x 系列已不再維護:沒有修正、沒有回溯移植、也沒有安全公告。此外,v0.1.x 會解析 Admin API 的 api_key 欄位卻從未讀取,等於該欄位沒有任何保護作用。
✅ 支援項目
Section titled “✅ 支援項目”| 領域 | 狀態 |
|---|---|
| 協定 | 在 TCP 上提供 HTTP/1.1 與 HTTP/2,在 QUIC 上提供 HTTP/3,來自同一份設定。 |
| TLS | 透過 ACME 自動取得公開憑證、常駐的內部憑證授權單位,以及手動的憑證與金鑰檔案。 |
| 靜態檔案 | 檔案供應,支援 zstd 與 gzip 壓縮、range 請求與條件式請求。 |
| 反向代理 | 多個上游、多種負載平衡策略、主動健康檢查與備援上游。 |
| FastCGI | 在 HTTP/1.1 與 HTTP/2 上支援 php_fastcgi。 |
| 速率限制 | 依 matcher 的精確本機速率限制。 |
| 可觀測性 | 支援輪替的存取日誌,以及 Prometheus metrics。 |
| 管理 | 用於檢視狀態與重新載入設定的 Admin API。 |
🛡️ 刻意拒絕的設定
Section titled “🛡️ 刻意拒絕的設定”設定格式定義的名稱多於伺服器實作的數量。伺服器無法兌現的名稱,會在載入時以名稱拒絕,並附上「功能不存在」的訊息。讀者最常問到的例子:
map、invoke與tracing等 directive;storage選項,因為憑證與狀態只存放在本機磁碟;on_demand_tls與 OCSP stapling 相關選項;handle_errors,其設定型別存在但不會執行任何工作;encode br,因為沒有串流 Brotli 編碼器。
完整清單維護在伺服器倉庫的 README,並由一個測試把關:當剖析器拒絕了清單未提及的名稱時,測試會失敗。
⚠️ 已知限制
Section titled “⚠️ 已知限制”- 憑證儲存只在本機。 多個實例無法共用同一份憑證儲存區,因為該儲存區是磁碟上的目錄。
- DNS-01 只有一個供應商。
tls { dns cloudflare <token> }與全域的acme_dns只實作了 Cloudflare。其他供應商名稱會在啟動時被拒絕,而不是被接受後忽略。 - HTTP/3 的 trailer 與 tunnel。 請求中宣告的 trailer 不會被轉送(回應送出前回
501,送出後對串流發出 reset),上游 trailer 會產生502,而CONNECT會回501。 - HTTP/3 上的 FastCGI 會回
501,直到該路徑擁有自己的 FastCGI client。 - WebSocket 升級在負載下會間歇性失敗,在忙碌的機器上約 10-15%。原因是上游
pingora-proxycrate 的競態(cloudflare/pingora#946),不是 Pingclair 自己的處理;閒置的機器無法重現。
缺陷與文件錯誤請透過issue tracker回報。指名私人通報管道的安全政策目前尚未公布。
