前言
我們通常在部署 web 服務(wù)的時(shí)候往往會選擇 nginx 作為最前面的一個狠角色岩榆,它的性能和能力大家也是有目共睹的色徘,反向代理負(fù)載均衡等等恭金。而作為后起之秀 caddy 卻不被人所熟知,不過漸漸的也開始展露頭角褂策。
今天我就來介紹這個 caddy 横腿,為什么我會稱它有可能成為下一個 nginx。
我先列舉幾個痛點(diǎn)你看下:
- nginx 的配置文件你是否感覺有時(shí)候有點(diǎn)臃腫
- https 需要購買或者申請證書斤寂,然后配置是否覺得麻煩耿焊?
- linux 下安裝 nginx 需要部分依賴
而 caddy 確實(shí)給我了一種眼前一亮的感覺。
使用
官網(wǎng):https://caddyserver.com/
安裝
https://caddyserver.com/docs/download
安裝很簡單遍搞,直接下載對應(yīng)的二進(jìn)制文件即可罗侯,或者按照對應(yīng)到操作系統(tǒng)去安裝也可以。沒有其他依賴溪猿。
使用
https://caddyserver.com/docs/getting-started
一個命令就可以啟動钩杰,caddy纫塌,默認(rèn)會去當(dāng)前目錄下尋找 Caddyfile
配置文件,也可以通過 --config 去指定文件位置
caddy start
caddy stop
caddy reload
反向代理
https://caddyserver.com/docs/caddyfile/directives/reverse_proxy
https://www.xxxx.com {
reverse_proxy /api/user* {
to 192.168.1.101:9000
}
}
靜態(tài)文件
https://www.xxxx.com {
root * /home/linkinstar/www
file_server
}
外網(wǎng)服務(wù)使用 https
https://caddyserver.com/docs/quick-starts/https
https://caddyserver.com/docs/automatic-https
caddy 最讓我驚訝的是自動的 https 功能讲弄,只要你有一個可以正常訪問的域名护戳,將域名指向你外網(wǎng)服務(wù)器對應(yīng)的 ip,然后向上面一樣配置好 Caddyfile垂睬,只要域名一致,https 就完成了抗悍,不需要你額外申請證書驹饺,不需要做其他任何的操作,真的很棒??缴渊,可謂是懶人必備
原理是赏壹,它會去 https://letsencrypt.org/ 調(diào)用對應(yīng)的接口去申請證書,這是一個免費(fèi)證書的申請網(wǎng)站衔沼,
本地使用 https 證書
當(dāng)我們的一些內(nèi)網(wǎng)服務(wù)器需要使用 https 證書的時(shí)候蝌借,怎么辦呢?因?yàn)閮?nèi)網(wǎng)的服務(wù)器沒有公網(wǎng) IP指蚁,caddy 去 letsencrypt 申請證書的時(shí)候無法驗(yàn)證菩佑,所以需要曲線救國。前提你需要一個域名凝化。https://zhuanlan.zhihu.com/p/63412372
申請證書
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
certbot-auto --manual --preferred-challenges dns certonly
接下來根據(jù)提示依次輸入域名,和一些提示稍坯,一般輸入y表示同意即可,知道讓你去添加一條 txt 解析記錄并驗(yàn)證的時(shí)候
將證書輸出驗(yàn)證內(nèi)容進(jìn)行 dns 解析配置
配置完成之后會在 /etc/letsencrypt/live/xxx.com 目錄下生成對應(yīng)的公鑰私鑰
配置Caddyfile
xxx.com:443 {
tls /etc/letsencrypt/live/xxx.com/cert.pem /etc/letsencrypt/live/xxx.com/privkey.pem
}
性能比較
https://caddy.community/t/siege-benchmarks-nginx-vs-caddy-identical-systems/2962
從性能上來說搓劫,確實(shí) nginx 要更勝一籌瞧哟,而且官方也承認(rèn)(畢竟 nginx 的設(shè)計(jì)就是干這個的)
不過從比較的數(shù)據(jù)上來說,能讓普通用戶使用很滿意了勤揩,并沒有一定需要追求極致的性能體驗(yàn),畢竟免費(fèi)的 https 已經(jīng)有點(diǎn)香了
總結(jié)
優(yōu)點(diǎn)
- caddy 發(fā)揮了 go 傳統(tǒng)的優(yōu)勢安裝沒有依賴秘蛔,使用方便
- 自動化的 https 證書的申請陨亡,很讓人舒服
- 配置項(xiàng)更加清晰和簡單,一目了然
缺點(diǎn)
- 性能比 nginx 略遜一籌
- 重啟的時(shí)候 https 會重新申請,會有短暫的停頓
- 使用案例少了一些
總的來說止吁,如果你正需要一個免費(fèi)方便的 https 的網(wǎng)關(guān),那就試試 caddy 吧臊诊,一定不會讓你失望的对供,而 caddy 也慢慢在發(fā)展约谈,雖然從設(shè)計(jì)角度講模型可能不如 nginx,但是從使用角度講犁钟,可能我后續(xù)更偏愛 caddy 一些