新興的web伺服器caddy

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

caddy 是一個像 Apache, nginx, 或 lighttpd 的web伺服器。
你要問nginx已經很好了,為什麼要用caddy呢? 我覺得caddy最大的特點是用起來簡單,
然後呢,它還有下面這些開箱即用的特性:

  • HTTP/2 全自動支援HTTP/2協議,無需任何配置。

  • Auto HTTPS Caddy 使用 Let's Encrypt 讓你的網站全自動變成全站HTTPS,無需任何配置。當然你想使用自己的認證也是可以的。

  • Multi-core 因為caddy是golang寫的,所以當然可以合理使用多核啦。

  • IPv6 完全支援IPv6環境.

  • WebSockets Caddy 對WebSockets有很好的支援.

  • Markdown 自動把md轉成 HTML ,當然,我後續要給大家介紹更強大的hugo來幹這個事情.

  • Logging Caddy 對log格式的定義很容易,更好的滿足你日誌收集的需求。

  • Easy Deployment 得益於go的特性,caddy只是一個小小的二進位檔案,沒有依賴,很好部署。

那麼在什麼情境下適合嘗試使用caddy呢,我推薦從以下情境開始:

  • 作為靜態頁面的webserver

  • 轉寄 fastcgi 請求到 php-fpm 服務,比如替換apache或nginx作為wordpress的server

  • 反向 Proxy,管理多個網站

  • 微服務的 API gateway ,我會專門寫一篇文章。

  • 有些在nginx上難以開發的需求,為caddy寫外掛程式太方便了。

入門

安裝caddy

  1. 下載 caddy

  2. 把caddy放到系統的PATH中,讓其可以直接執行。比如Linux中一般習慣放到 /usr/local/bin

簡單測試

  1. 找一個做測試的臨時目錄,產生一個測試首頁。echo "hello world">index.html

  2. 執行 caddy

  3. 在另一個終端 curl localhost:2015 或在瀏覽器訪問 (http://localhost:2015)

Caddyfile

caddy的一個特色就是配置簡單,nginx的設定檔群已經越看越暈了。我們來試試:

在目前的目錄建立這樣一個叫Caddyfile的檔案:

localhost:2020gzip

這次,我們改變了連接埠,並且啟用了gzip自動壓縮資料。運行caddy,去你指定的地址看看吧。

說一句,caddy的潛規則是找目前的目錄叫Caddyfile的檔案,你也可以用參數指定檔案和路徑。

更專業一點

我們隨便說點進階功能,其實caddy的文檔挺不錯的,看文檔就可以瞭解各種功能。

自動 HTTPS

如果你滿足這些條件,你用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當然也是可以的,你只需要配置若干網域名稱,
把每個網域名稱的配置寫在後邊的大括弧配置塊裡就行了。下一個例子裡就有。

PHP or Wordpress

據說全世界四分之一的網站都是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的用法。敬請期待。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.