簡介
Caddy服務(wù)器(或稱Caddy Web)是一個開源的,使用 Golang 編寫,支持 HTTP/2 的 Web 服務(wù)端。它使用 Golang 標準庫提供 HTTP 功能。
Caddy 一個顯著的特性是默認啟用 HTTPS。它是第一個無需額外配置即可提供 HTTPS 特性的 Web 服務(wù)器。
作者 Matt Holt 于 2014 年 12 月開始開發(fā) Caddy ,并于 2015 年 4 月發(fā)布第一個版本。在發(fā)布后的一年里,它的下載量超過了 20000 次,并在 GitHub 上獲得了 4500 個 Star。
Caddy 支持各種 Web 技術(shù),提供靜態(tài)編譯的二進制文件,支持 i386、amd64 和 ARM 架構(gòu)上的 Windows、Mac、Linux、Android 和 BSD 操作系統(tǒng)。
相比于傳統(tǒng)的 Web 服務(wù)器(如 Nginx、Apache),Caddy 的目標是通過更簡潔的配置、更智能的功能來減少人為出錯的可能性,并提升部署效率。
支持 API 和配置文件兩種方式:
您可以在同一臺服務(wù)器上同時使用 API 和配置文件,但我們不建議這樣做:最好有一個真相來源。
Caddyfile的結(jié)構(gòu)

要點
? 一個可選的 全局選項塊 可以是文件中第一個內(nèi)容。
? 代碼段 或 命名路由 可以選擇性地出現(xiàn)在下一個位置。
? 否則,Caddyfile 的第一行始終是將要服務(wù)的站點的 地址。
? 所有 指令 和 匹配器 必須放在站點塊中。站點塊之間沒有全局范圍或繼承關(guān)系。
? 如果只有一個站點塊,則其花括號 { }
是可選的。
Caddyfile 由至少一個或多個站點塊組成,這些站點塊始終以一個或多個站點的地址開頭。出現(xiàn)在地址之前的任何指令都會讓解析器感到困惑。
特點
Caddy 是一個現(xiàn)代的、開源的 Web 服務(wù)器,它以其易用性和安全性而聞名。以下是 Caddy 的一些主要功能亮點:
自動 HTTPS:Caddy 最顯著的特點之一是自動為網(wǎng)站啟用 HTTPS。它通過自動獲取和續(xù)訂 Let's Encrypt 的 SSL 證書來實現(xiàn)這一點,無需手動干預(yù)。
配置簡單:Caddy 使用 Caddyfile 配置文件,這是一種簡潔、易于理解的配置語法,使得配置服務(wù)器變得非常簡單。
模塊化:Caddy 是模塊化的,這意味著你可以根據(jù)需要添加或刪除功能。這提供了極大的靈活性,并保持了核心服務(wù)的輕量級。
內(nèi)置功能:Caddy 內(nèi)置了許多常用的功能,如 HTTP/2、HTTP/3、反向代理、負載均衡、Markdown 渲染、文件服務(wù)、請求重寫和重定向等。
安全性:Caddy 重視安全性,默認啟用了一系列安全最佳實踐,如 TLS 1.3、OCSP stapling、HTTP Strict Transport Security (HSTS) 等。
多平臺支持:Caddy 支持多種操作系統(tǒng),包括 Linux、macOS、Windows、FreeBSD、OpenBSD、Docker 和 Kubernetes。
API 和插件:Caddy 提供了 API,允許開發(fā)者編寫插件來擴展其功能。這些插件可以用多種編程語言編寫。
實時加載:Caddy 支持在不重啟服務(wù)器的情況下實時重新加載配置,這有助于減少停機時間。
量化日志:Caddy 的日志記錄功能支持結(jié)構(gòu)化日志輸出,便于日志分析和監(jiān)控。
易于更新:Caddy 可以通過簡單的命令行工具進行更新,無需復(fù)雜的升級過程。
跨平臺 GUI:Caddy 還提供了一個跨平臺的圖形用戶界面 (GUI),使得配置和管理更加直觀。
強大的路由功能:Caddy 的路由功能非常強大,支持匹配不同的請求條件,如路徑、主機名、查詢參數(shù)等,并執(zhí)行相應(yīng)的操作。
Caddy 的這些功能使其成為開發(fā)人員、系統(tǒng)管理員和企業(yè)用戶的受歡迎選擇,特別是對于那些尋求易于配置、維護和擴展的 Web 服務(wù)器解決方案的用戶。
Caddy 與 Nginx 的對比
適用場景
Caddy 適合多種場景,特別是那些需要易用性、安全性和現(xiàn)代網(wǎng)絡(luò)技術(shù)的環(huán)境。以下是一些適合使用 Caddy 的場景:
靜態(tài)網(wǎng)站托管:Caddy 非常適合托管靜態(tài)網(wǎng)站,因為它簡單易用,可以快速設(shè)置 HTTPS 和其他優(yōu)化功能。
個人項目:對于個人開發(fā)者來說,Caddy 的簡單配置和自動 HTTPS 功能使得它成為快速部署個人項目(如博客、個人網(wǎng)站等)的理想選擇。
反向代理和負載均衡:Caddy 可以作為反向代理服務(wù)器,將請求轉(zhuǎn)發(fā)到后端服務(wù),同時支持負載均衡,適合需要分發(fā)流量到多個后端服務(wù)器的應(yīng)用。
API 服務(wù)器:Caddy 的路由功能和模塊化設(shè)計使其成為托管 RESTful API 的好選擇,可以輕松處理不同路徑和方法的請求。
服務(wù)端渲染 (SSR):對于需要服務(wù)端渲染的 Web 應(yīng)用,Caddy 可以與 Node.js、Python 等后端技術(shù)棧結(jié)合使用。
文件服務(wù)器:Caddy 可以輕松配置為文件服務(wù)器,提供文件下載服務(wù),支持目錄列表和權(quán)限控制。
WebSockets:Caddy 支持升級 HTTP 連接為 WebSocket 連接,適合需要實時雙向通信的應(yīng)用,如聊天室、游戲服務(wù)器等。
容器化和微服務(wù):在容器化和微服務(wù)架構(gòu)中,Caddy 可以作為入口點,管理到不同服務(wù)的流量,并自動處理 TLS。
邊緣計算和 CDN:Caddy 可以在邊緣節(jié)點上運行,作為內(nèi)容分發(fā)網(wǎng)絡(luò) (CDN) 的一部分,提供高效的內(nèi)容分發(fā)。
開發(fā)環(huán)境:Caddy 的實時重新加載配置功能使其成為開發(fā)環(huán)境中的理想選擇,可以快速測試配置更改。
小型企業(yè)和初創(chuàng)公司:對于資源有限的小型企業(yè)和初創(chuàng)公司,Caddy 提供了一個易于管理且功能強大的 Web 服務(wù)器解決方案。
安全性要求高的網(wǎng)站:由于 Caddy 默認啟用許多安全最佳實踐,因此它適合那些對安全性有高要求的網(wǎng)站。
總之,Caddy 適用于任何需要可靠、高效、易于配置的 Web 服務(wù)器的場景,特別是那些希望利用現(xiàn)代網(wǎng)絡(luò)技術(shù)(如 HTTP/2、HTTP/3、自動 HTTPS)的項目。
閱讀原文:點擊這里
該文章在 2025/8/13 16:46:06 編輯過