新興的web服務(wù)器caddy
時間:2022-08-11 16:06:01 | 來源:網(wǎng)站運營
時間:2022-08-11 16:06:01 來源:網(wǎng)站運營
caddy 是一個像 Apache, nginx, 或 lighttpd 的web服務(wù)器。 你要問nginx已經(jīng)很好了,為什么要用caddy呢? 我覺得caddy最大的特點是用起來簡單, 然后呢,它還有下面這些開箱即用的特性:
- HTTP/2 全自動支持HTTP/2協(xié)議,無需任何配置。
- Auto HTTPS Caddy 使用 Let’s Encrypt 讓你的站點全自動變成全站HTTPS,無需任何配置。當然你想使用自己的證書也是可以的。
- Multi-core 因為caddy是golang寫的,所以當然可以合理使用多核啦。
- IPv6 完全支持IPv6環(huán)境.
- WebSockets Caddy 對WebSockets有很好的支持.
- Markdown 自動把md轉(zhuǎn)成 HTML ,當然,我后續(xù)要給大家介紹更強大的hugo來干這個事情.
- Logging Caddy 對log格式的定義很容易,更好的滿足你日志收集的需求。
- Easy Deployment 得益于go的特性,caddy只是一個小小的二進制文件,沒有依賴,很好部署。
那么在什么場景下適合嘗試使用caddy呢,我推薦從以下場景開始:
- 作為靜態(tài)頁面的webserver
- 轉(zhuǎn)發(fā) fastcgi 請求到 php-fpm 服務(wù),比如替換apache或nginx作為wordpress的server
- 反向代理,管理多個站點
- 微服務(wù)的 API gateway ,我會專門寫一篇文章。
- 有些在nginx上難以開發(fā)的需求,為caddy寫插件太方便了。
入門
安裝caddy
- 下載 caddy
- 把caddy放到系統(tǒng)的PATH中,讓其可以直接執(zhí)行。比如Linux中一般習(xí)慣放到 /usr/local/bin
簡單測試
- 找一個做測試的臨時目錄,生成一個測試主頁。echo "hello world">index.html
- 執(zhí)行 caddy
- 在另一個終端 curl localhost:2015 或在瀏覽器訪問 (http://localhost:2015)
Caddyfile
caddy的一個特色就是配置簡單,nginx的配置文件群已經(jīng)越看越暈了。我們來試試:
在當前目錄創(chuàng)建這樣一個叫Caddyfile的文件:
localhost:2020gzip
這次,我們改變了端口,并且啟用了gzip自動壓縮數(shù)據(jù)。運行caddy,去你指定的地址看看吧。
說一句,caddy的潛規(guī)則是找當前目錄叫Caddyfile的文件,你也可以用參數(shù)指定文件和路徑。
更專業(yè)一點
我們隨便說點高級功能,其實caddy的文檔挺不錯的,看文檔就可以了解各種功能。
自動 HTTPS
如果你滿足這些條件,你用caddy啟動的應(yīng)用將自動獲得HTTPS,不用你買證書了,這都是Let's Encrypt的功勞。
- host 那里要填一個域名,不能是 localhost 或 IP
- 不要用冒號手動指定端口
- 不要在域名前手動聲明http
- 沒在配置里關(guān)掉TLS 或者聲明用自己的證書但是還沒配好
- caddy 有權(quán)限綁定 80 和 443 端口
前邊都能懂,說下最后一條。在init文件夾的啟動配置教程里都有,一般建議你用www-data用戶啟動服務(wù), 你不是root但是Linux依然可以讓你綁定80端口,只需要執(zhí)行setcap cap_net_bind_service=+ep caddy 。 具體看文檔吧。
多站點
你可能想,之前用nginx主要是為了支持多站點,caddy當然也是可以的,你只需要配置若干域名, 把每個域名的配置寫在后邊的大括號配置塊里就行了。下一個例子里就有。
PHP or Wordpress
據(jù)說全世界四分之一的站點都是wordpress搭建的,而PHP公認是世界上最好的語言。 caddy還沒有完全支持unix socket通訊呢,趕忙先把PHP支持了再說。
這是我自己博客的配置片段,我的荒蕪的非技術(shù)博客依然用的wordpress。 timeouts關(guān)鍵字是我摸索出來的,官方示例沒有,不設(shè)置這個國內(nèi)升級插件什么的根本成功不了。 tls其實用默認值是可以的,但是后臺會有一堆落后的搜索引擎和爬蟲報錯,于是我調(diào)低了一點。 另外我還把www定向到了裸域名,大家一般都這樣做,或者反過來。
xiafeng.net { root /data/xiafeng/public timeouts 10m gzip tls { protocols tls1.0 tls1.2 } fastcgi / unix:/var/run/php/php7.0-fpm.sock php rewrite { if {path} not_match ^//wp-admin to {path} {path}/ /index.php?_url={uri} }}www.xiafeng.net { redir https://xiafeng.net}
開機啟動
因為大部分發(fā)行版目前還沒辦法直接安裝caddy,開機啟動可能需要你自己動手啦。
在你下載的壓縮包中有一個init文件夾,里邊有Mac,Linux,FreeBSD的開機啟動配置幫助, 還有示例腳本,可以根據(jù)你的要求再DIY一下。
預(yù)告
作為入門就先介紹這么多,我接下來的博客將會寫一些好玩的或?qū)I(yè)的caddy的用法。敬請期待。