組件分享之后端組件——一個(gè)可擴(kuò)展的服務(wù)器平臺caddy
背景
近期正在探索前端伪节、后端讶泰、系統(tǒng)端各類常用組件與工具毅待,對其一些常見的組件進(jìn)行再次整理一下,形成標(biāo)準(zhǔn)化組件專題酪捡,后續(xù)該專題將包含各類語言中的一些常用組件。歡迎大家進(jìn)行持續(xù)關(guān)注纳账。
組件基本信息
- 組件:caddy
- 開源協(xié)議:Apache-2.0 License
- 官網(wǎng):caddyserver.com
內(nèi)容
本節(jié)我們分享一個(gè)可擴(kuò)展的服務(wù)器平臺caddy逛薇,Caddy 2 是一個(gè)強(qiáng)大的、企業(yè)級的疏虫、開源的 Web 服務(wù)器永罚,帶有用 Go 編寫的 自動(dòng) HTTPS,默認(rèn)使用TLS卧秘。Caddy 簡化了您的基礎(chǔ)架構(gòu)呢袱。它負(fù)責(zé) TLS 證書更新、OCSP 裝訂翅敌、靜態(tài)文件服務(wù)羞福、反向代理、Kubernetes 入口等蚯涮。
概述
Caddy 最常用作 HTTPS 服務(wù)器治专,但它適用于任何長時(shí)間運(yùn)行的 Go 程序。首先遭顶,它是一個(gè)運(yùn)行 Go 應(yīng)用程序的平臺张峰。Caddy“應(yīng)用程序”只是作為 Caddy 模塊實(shí)現(xiàn)的 Go 程序。兩個(gè)應(yīng)用程序 -
tls
并且http
- 標(biāo)配 Caddy棒旗。Caddy 應(yīng)用程序立即受益于自動(dòng)化文檔喘批、通過 API進(jìn)行的優(yōu)雅在線配置更改以及與其他 Caddy 應(yīng)用程序的統(tǒng)一。
雖然JSON是 Caddy 的原生配置語言铣揉,但 Caddy 可以接受來自配置適配器的輸入饶深,這些適配器基本上可以將您選擇的任何配置格式轉(zhuǎn)換為 JSON:Caddyfile、JSON 5逛拱、YAML粥喜、TOML、NGINX 配置等橘券。
配置 Caddy 的主要方法是通過其 API额湘,但如果您更喜歡配置文件,命令行界面也支持這些旁舰。
與現(xiàn)有的任何 Web 服務(wù)器相比锋华,Caddy 具有前所未有的控制水平。在 Caddy 中箭窜,您通常在內(nèi)存中設(shè)置初始化類型的實(shí)際值毯焕,這些值支持從 HTTP 處理程序和 TLS 握手到存儲介質(zhì)的所有內(nèi)容。Caddy 的可擴(kuò)展性也非常可笑纳猫,它具有強(qiáng)大的插件系統(tǒng)婆咸,可以大大改進(jìn)其他 Web 服務(wù)器。
要使用這種設(shè)計(jì)的力量芜辕,您需要了解配置文檔的結(jié)構(gòu)尚骄。有關(guān)Caddy 配置結(jié)構(gòu)的詳細(xì)信息,請參閱我們的文檔站點(diǎn)侵续。
幾乎所有 Caddy 的配置都包含在單個(gè)配置文檔中倔丈,而不是像其他 Web 服務(wù)器那樣分散在 CLI 標(biāo)志和環(huán)境變量以及配置文件中。這使得管理您的服務(wù)器配置更加直接状蜗,并減少了隱藏的變量/因素需五。
特征
- 使用Caddyfile輕松配置
- 強(qiáng)大的配置及其原生 JSON 配置
- 使用JSON API進(jìn)行動(dòng)態(tài)配置
- 如果您不喜歡 JSON,請配置適配器
- 默認(rèn) 自動(dòng) HTTPS
- ZeroSSL和Let's Encrypt用于公共名稱
- 用于內(nèi)部名稱和 IP 的完全托管的本地 CA
- 可以與集群中的其他 Caddy 實(shí)例協(xié)調(diào)
- 多發(fā)行人后備
- 當(dāng)其他服務(wù)器因 TLS/OCSP/證書相關(guān)問題而停機(jī)時(shí)保持正常運(yùn)行
- 在處理數(shù)萬億個(gè)請求并管理數(shù)百萬個(gè) TLS 證書后轧坎,可投入生產(chǎn)
- 擴(kuò)展到數(shù)以萬計(jì)的站點(diǎn)......而且可能更多
- HTTP/1.1宏邮、HTTP/2 和實(shí)驗(yàn)性 HTTP/3支持
- 高度可擴(kuò)展的 模塊化架構(gòu)讓 Caddy 做任何事情都不會臃腫
- 在沒有外部依賴的****任何地方運(yùn)行(甚至沒有 libc)
- 用 Go 編寫,一種比其他服務(wù)器具有更高內(nèi)存安全保證的語言
- 其實(shí)用起來很有趣
- 所以缸血,還有更多的發(fā)現(xiàn)
本文聲明:
知識共享許可協(xié)議
本作品由 cn華少 采用 知識共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進(jìn)行許可蜀铲。