跳到內容

專案狀態

目前版本是 v0.2.0-rc.3,屬於 release candidate。它的發行說明列出變更內容,以及標記版本時已知的缺陷。

v0.1.x 系列已不再維護:沒有修正、沒有回溯移植、也沒有安全公告。此外,v0.1.x 會解析 Admin API 的 api_key 欄位卻從未讀取,等於該欄位沒有任何保護作用。

領域 狀態
協定 在 TCP 上提供 HTTP/1.1 與 HTTP/2,在 QUIC 上提供 HTTP/3,來自同一份設定。
TLS 透過 ACME 自動取得公開憑證、常駐的內部憑證授權單位,以及手動的憑證與金鑰檔案。
靜態檔案 檔案供應,支援 zstdgzip 壓縮、range 請求與條件式請求。
反向代理 多個上游、多種負載平衡策略、主動健康檢查與備援上游。
FastCGI 在 HTTP/1.1 與 HTTP/2 上支援 php_fastcgi
速率限制 依 matcher 的精確本機速率限制。
可觀測性 支援輪替的存取日誌,以及 Prometheus metrics。
管理 用於檢視狀態與重新載入設定的 Admin API。

設定格式定義的名稱多於伺服器實作的數量。伺服器無法兌現的名稱,會在載入時以名稱拒絕,並附上「功能不存在」的訊息。讀者最常問到的例子:

  • mapinvoketracing 等 directive;
  • storage 選項,因為憑證與狀態只存放在本機磁碟;
  • on_demand_tls 與 OCSP stapling 相關選項;
  • handle_errors,其設定型別存在但不會執行任何工作;
  • encode br,因為沒有串流 Brotli 編碼器。

完整清單維護在伺服器倉庫的 README,並由一個測試把關:當剖析器拒絕了清單未提及的名稱時,測試會失敗。

  • 憑證儲存只在本機。 多個實例無法共用同一份憑證儲存區,因為該儲存區是磁碟上的目錄。
  • 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-proxy crate 的競態(cloudflare/pingora#946),不是 Pingclair 自己的處理;閒置的機器無法重現。

缺陷與文件錯誤請透過issue tracker回報。指名私人通報管道的安全政策目前尚未公布。