热门问题
时间线
聊天
视角

Caddy

開源的,原生支持 HTTP/2 的 Web 服務器 来自维基百科,自由的百科全书

Remove ads

Caddy伺服器(或稱Caddy Web)是一個開源的,使用Golang編寫,支援HTTP/2的Web伺服器端。它使用Golang標準庫提供HTTP功能。

快速預覽 原作者, 首次釋出 ...

Caddy一個顯著的特性是預設啟用HTTPS[2][3]。它是第一個無需額外組態即可提供HTTPS特性的Web伺服器[4]

作者Matt Holt於2014年12月開始開發Caddy,並於2015年4月釋出第一個版本。[5]在釋出後的一年裡,它的下載量超過了20000次,並在GitHub上獲得了4500個Star。[6]

Caddy支援各種Web技術,提供靜態編譯的二進制檔案,支援i386amd64ARM架構上的WindowsMacLinuxAndroidBSD作業系統。

Remove ads

功能

Caddy可以提供各種網站技術,它也可以作為反向代理和負載均衡器。Caddy的大部分功能都以中介軟體的形式實現,並通過Caddyfile中的指令(用於組態Caddy的文字檔案)進行控制。[7]

  • HTTP/1.1(原始的HTTP)以及HTTP/2(HTTPS的推薦連接方案)
  • HTTPS,同時接受自動簽發和手動管理
    • TLS 1.2臨時性支援(舊協定)[8]
    • SNI
    • OCSP憑證交換驗證
  • 虛擬主機 (多個站點工作在單個埠上)[9]
  • 原生IPv4IPv6支援
  • 靜態檔案分發
  • 平滑重新啟動/多載
  • 反向代理(HTTP或WebSocket
  • 負載均衡和健康性檢查
  • FastCGI支援[10][11]
  • 設定檔模板
  • Markdown彩現
  • CGI通過WebSocket
  • Gzip壓縮
  • 簡單伺服器鑒權
  • URL重寫
  • 重新導向
  • 檔案瀏覽服務
  • 訪問紀錄檔
  • 實驗性QUIC支援

安全

Caddy免於很多已知的CVEs攻擊(包括 Heartbleed、DROWN、POODLE和BEAST[12],另外,Caddy使用TLS_FALLBACK_SCSV以防止協定降級攻擊。

2015年6月2日,版本0.7.1修復了Caddy簡單伺服器鑒權中介軟體中時間欺詐攻擊的漏洞。[13]

關於協定和密碼套件,Caddy使用TLS 1.0-1.2,並且傾向於ECDHE ECDSA與AES256-GCM-SHA384,支援十幾種不同的加密方式。Cloudflare已經使用了Caddy作為TLS 1.3的實現方案。[14]

傳統的特權降級無法工作在Golang程式上。[15] 為了繫結低於1024的埠,Caddy必須使用root帳戶執行 (不建議) 或通過setcap給予低位埠使用權限(建議的)。並且,在將來的版本中會嘗試使用非特級子行程執行。[16]

Caddy沒有自動啟動HTTP Strict Transport Security,推薦通過Caddy的header組態啟用HSTS。[17]

Remove ads

自動簽發 HTTPS

Caddy預設通過檢查域名來啟用HTTPS (通過ACME protocol檢查域名並簽發憑證),並且重新導向HTTP請求到HTTPS。[18] 它在啟動期間根據需要簽發憑證,並在伺服器的使用期間自動重簽發。Let's Encrypt是預設的憑證頒發機構,但使用者可以自訂所使用的ACME CA,這在測試組態時是必要的。在2016年第一季度,有百分之二的Let's Encrypt憑證是由Caddy簽發的。

一個可選的組態允許Caddy在需要時簽發一個憑證「按需 TLS」[19]使用這種方案時,使用者必須指定可通過該方案組態的憑證數量。當Caddy收到一個沒有組態憑證的請求時,它會自動通過ACME簽發並組態,然後將憑證儲存於主記憶體和硬碟。這個過程通常需要幾秒鐘的時間,並且受到限制。

當使用TLS,Caddy會自動切換對談金鑰以保證安全性。[20]

參考資料

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads