真香!自動(dòng)續(xù)期 HTTPS 的開源 Web 服務(wù)器,免費(fèi)+實(shí)用
眾所周知,Web 服務(wù)器是 Web 開發(fā)中不可或缺的基礎(chǔ)服務(wù),在開發(fā)中經(jīng)常會(huì)用到。耳熟能詳?shù)拈_源 Web 服務(wù)器有久負(fù)盛名的 Apache、性能強(qiáng)勁的 Nginx。而我們今天要介紹的開源項(xiàng)目是采用 Go 編寫的 Web 服務(wù)端“后起之秀”:Caddy 它擁有下載無需安裝就能用、零配置實(shí)現(xiàn) HTTPS 等特點(diǎn),從而在強(qiáng)者如云的 Web 服務(wù)器中占據(jù)了一席之地。
在這個(gè) HTTPS 必選的時(shí)代,Caddy 憑借無需額外配置自動(dòng) HTTPS,分分鐘完成 HTTPS 站點(diǎn)搭建,使它成為了中小型 Web 服務(wù)的首選服務(wù)器。Caddy 深受開源愛好者們的喜愛,2014 年開源至今共收獲了 3.6 萬顆星。
一、為什么使用 Caddy ?
Caddy 是一個(gè)強(qiáng)大的、可擴(kuò)展的平臺(tái),可以為您的站點(diǎn)、服務(wù)和應(yīng)用程序提供服務(wù)。
使用 Caddy 可以在 Linux、Mac、Windows 上快速部署 http(s) 站點(diǎn)或反向代理服務(wù)。支持:
- HTTP/1.1 和 HTTP/2
- 同時(shí)接受 HTTPS 自動(dòng)簽發(fā)和手動(dòng)管理
- 虛擬主機(jī) (多個(gè)站點(diǎn)工作在單個(gè)端口上)
- 原生 IPv4 和 IPv6 支持
- 靜態(tài)文件分發(fā)
- 平滑重啟/重載
- 反向代理 (HTTP 或 WebSocket)
- 負(fù)載均衡和健康性檢查
- Markdown 渲染
- 文件瀏覽服務(wù)
- 等等
與傳統(tǒng)的 Nginx 或者 Apache 相比,Caddy 整體只有一個(gè)可執(zhí)行文件,安裝便捷不易出現(xiàn)奇怪的依賴問題,配置文件結(jié)構(gòu)清晰語法簡(jiǎn)單易于上手,依托于模塊化架構(gòu)可以使用 Go 語言快速開發(fā)擴(kuò)展模塊。
下面讓我們上手把玩一番吧。
二、安裝
系統(tǒng)環(huán)境:Ubuntu 20.04 LTS
Caddy 可以作為一個(gè)系統(tǒng)服務(wù)安裝
注意:這種方式安裝完成后會(huì)啟動(dòng)服務(wù),開機(jī)自動(dòng)啟動(dòng)。
還可以下載一個(gè)可執(zhí)行文件使用。
- 下載地址
- 在網(wǎng)頁上方選擇自己的操作系統(tǒng)后,點(diǎn)擊右側(cè)藍(lán)色的 Download 按鈕即可
- 下載好的文件不能夠直接運(yùn)行,需要為其添加權(quán)限
命令行執(zhí)行 caddy version 命令,出現(xiàn)版本信息:
v2.4.6 h1:HGkGICFGvyrodcqOOclHKfvJC0qTU7vny/7FhYp9hNw=即為安裝成功!
三、從零完成 HTTPS 站點(diǎn)
下面將演示如何通過 Caddy 完成 HTTPS 站點(diǎn)。只需要 4 步:
Tips 例子用的域名為:caddy.hellogithub.com 修改為你的域名即可。
第一步:安裝,采用上面介紹的命令安裝
第二步:設(shè)置域名解析地址,在購買域名的網(wǎng)站設(shè)置。如下圖:
設(shè)置完生效需要幾分鐘
域名設(shè)置生效,返回如下:
{"Status":0,"TC":false,"RD":true,"RA":true,"AD":false,"CD":false,"Question":[{"name":"caddy.hellogithub.com","type":1}],"Answer":[{"name":"caddy.hellogithub.com","type":1,"TTL":592,"data":"107.150.122.176"}]}第三步:創(chuàng)建配置文件 Caddyfile,無需額外的開啟 HTTPS 的設(shè)置:
caddy.hellogithub.com respond "Hello HTTPS!"- 域名
- 訪問返回的內(nèi)容
第四步:?jiǎn)?dòng),在同一目錄下執(zhí)行命令:sudo caddy run
Caddy 默認(rèn)使用執(zhí)行命令目錄下的 Caddyfile 文件內(nèi)的配置。
最后,檢驗(yàn)效果吧!
四、上手教程
這里將從 Caddy 常用命令開始,再到配置講解,最后會(huì)通過一個(gè)實(shí)際案例來展示如何用 Caddy 配置網(wǎng)站和上線。
4.1 常用命令
4.2 配置文件
Caddy 的原生配置文件使用的是 JSON 格式。但是為了用戶編寫方便它提供了 Caddyfile 作為接口讓用戶可以快速配置站點(diǎn)信息,運(yùn)行時(shí) Caddy 會(huì)自動(dòng)將 Caddyfile 的配置信息轉(zhuǎn)為 JSON 配置文件。
Caddyfile 所能提供功能不如 JSON 配置文件強(qiáng)大,但是對(duì)于不需要復(fù)雜配置的用戶而言完全夠用了。
Caddyfile 的配置指令格式如下:
Caddyfile 的文件結(jié)構(gòu)如圖所示:
4.3 演示
下面將演示如何用 Caddy 搭建站點(diǎn),加深理解配置格式和命令使用。
目錄結(jié)構(gòu):
Caddyfile 配置內(nèi)容如下:
在當(dāng)前目錄輸入:
$ caddy run # 啟動(dòng) Caddy最后,效果如下:
- 訪問:http://localhost:3000 可以看到頁面展示 “你好,世界!”
- 訪問:http://localhost:3000/public/HG.html 提示輸入用戶名和密碼,驗(yàn)證正確后才能看到頁面。
- 訪問:http://localhost:4000 則會(huì)自動(dòng)跳轉(zhuǎn)到端口 3000 的頁面
4.4 提供接口管理方式
Caddy 除了簡(jiǎn)單易懂的配置文件方式,還提供了管理配置的接口。通過這些接口可以輕松實(shí)現(xiàn) Web 服務(wù)器管理自動(dòng)化、集成發(fā)布等高級(jí)功能。
提供的接口和功能:
- POST /load 設(shè)置或替換活動(dòng)配置
- POST /stop 停止活動(dòng)配置并退出進(jìn)程
- GET /config/[path] 導(dǎo)出指定路徑的配置
- POST /config/[path] 設(shè)置或替換對(duì)象;追加到數(shù)組
- PUT /config/[path] 創(chuàng)建新對(duì)象或插入數(shù)組
- PATCH /config/[path] 替換現(xiàn)有對(duì)象或數(shù)組元素
- DELETE /config/[path] 刪除指定路徑的值
- 在 JSON 中使用@id 輕松遍歷配置結(jié)構(gòu)
- GET /reverse_proxy/upstreams 返回配置的代理上游的當(dāng)前狀態(tài)
由于篇幅問題這里就不再進(jìn)行演示了,如果您想深入了解可以閱讀 Caddy 的官方文檔。
五、總結(jié)
看到這里你應(yīng)該對(duì) Caddy 有了一些了解,有沒有一種相見恨晚的感覺?
雖然它的性能比不了 Nginx,但如果論上手的難易度 Caddy 甩 Nginx 幾條街!主要是默認(rèn)開啟 HTTPS 功能太香了,你什么都不用管就可以免費(fèi)、快速、輕松開啟網(wǎng)站 HTTPS。
最后,如果你想搭建個(gè)靜態(tài)博客或小站,快去試試 Caddy 吧!香不香只有“吃”過才知道~
這里是 HelloGitHub 推出的《講解開源項(xiàng)目》系列,為您叩開開源項(xiàng)目的大門。