caddy 是一個像 Apache, nginx, 或 lighttpd 的web服務器。
你要問nginx已經很好了,爲何要用caddy呢? 我以爲caddy最大的特色是用起來簡單,
而後呢,它還有下面這些開箱即用的特性:php
HTTP/2
全自動支持HTTP/2協議,無需任何配置。html
Auto HTTPS
Caddy 使用 Let's Encrypt 讓你的站點全自動變成全站HTTPS,無需任何配置。固然你想使用本身的證書也是能夠的。nginx
Multi-core
由於caddy是golang寫的,因此固然能夠合理使用多核啦。golang
IPv6
徹底支持IPv6環境.web
WebSockets
Caddy 對WebSockets有很好的支持.apache
Markdown
自動把md轉成 HTML ,固然,我後續要給你們介紹更強大的hugo來幹這個事情.瀏覽器
Logging
Caddy 對log格式的定義很容易,更好的知足你日誌收集的需求。服務器
Easy Deployment
得益於go的特性,caddy只是一個小小的二進制文件,沒有依賴,很好部署。php7
那麼在什麼場景下適合嘗試使用caddy
呢,我推薦從如下場景開始:curl
做爲靜態頁面的webserver
轉發 fastcgi 請求到 php-fpm 服務,好比替換apache或nginx做爲wordpress的server
反向代理,管理多個站點
微服務的 API gateway ,我會專門寫一篇文章。
有些在nginx上難以開發的需求,爲caddy寫插件太方便了。
下載 caddy
把caddy放到系統的PATH中,讓其能夠直接執行。好比Linux中通常習慣放到 /usr/local/bin
找一個作測試的臨時目錄,生成一個測試主頁。echo "hello world">index.html
執行 caddy
在另外一個終端 curl localhost:2015
或在瀏覽器訪問 (http://localhost:2015)
caddy的一個特點就是配置簡單,nginx的配置文件羣已經越看越暈了。咱們來試試:
在當前目錄建立這樣一個叫Caddyfile
的文件:
localhost:2020 gzip
此次,咱們改變了端口,而且啓用了gzip自動壓縮數據。運行caddy
,去你指定的地址看看吧。
說一句,caddy的潛規則是找當前目錄叫Caddyfile
的文件,你也能夠用參數指定文件和路徑。
咱們隨便說點高級功能,其實caddy的文檔挺不錯的,看文檔就能夠了解各類功能。
若是你知足這些條件,你用caddy啓動的應用將自動得到HTTPS,不用你買證書了,這都是Let's Encrypt
的功勞。
host 那裏要填一個域名,不能是 localhost 或 IP
不要用冒號手動指定端口
不要在域名前手動聲明http
沒在配置裏關掉TLS 或者聲明用本身的證書可是還沒配好
caddy 有權限綁定 80 和 443 端口
前邊都能懂,說下最後一條。在init文件夾的啓動配置教程裏都有,通常建議你用www-data用戶啓動服務,
你不是root可是Linux依然可讓你綁定80端口,只須要執行setcap cap_net_bind_service=+ep caddy
。
具體看文檔吧。
你可能想,以前用nginx主要是爲了支持多站點,caddy固然也是能夠的,你只須要配置若干域名,
把每一個域名的配置寫在後邊的大括號配置塊裏就好了。下一個例子裏就有。
聽說全世界四分之一的站點都是wordpress搭建的,而PHP公認是世界上最好的語言。
caddy尚未徹底支持unix socket通信呢,趕緊先把PHP支持了再說。
這是我本身博客的配置片斷,個人荒蕪的非技術博客依然用的wordpress。timeouts
關鍵字是我摸索出來的,官方示例沒有,不設置這個國內升級插件什麼的根本成功不了。tls
其實用默認值是能夠的,可是後臺會有一堆落後的搜索引擎和爬蟲報錯,因而我調低了一點。
另外我還把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 }
由於大部分發行版目前還沒辦法直接安裝caddy,開機啓動可能須要你本身動手啦。
在你下載的壓縮包中有一個init文件夾,裏邊有Mac,Linux,FreeBSD的開機啓動配置幫助,
還有示例腳本,能夠根據你的要求再DIY一下。
做爲入門就先介紹這麼多,我接下來的博客將會寫一些好玩的或專業的caddy的用法。敬請期待。