技術漫談|快速上手更簡單的 Web 伺服器——Caddy

說到Web 服務器,我們大多想到的是 Apache 這個老前輩和如日中天的Nginx,但是今天我將要分享的是 Web 服務器和反向代理服務器的新秀 Caddy。在我們擁有了這麼強大的 Nginx 以後為什麼還需要 Caddy? 我認為 Caddy 之所以可以佔有一席之地是因為它的兩大法寶:配置簡單 和 自動啟用 HTTPS。下面介紹如何快速上手這個軟件。

技術漫談|快速上手更簡單的 Web 服務器——Caddy

Caddy 提醒定製化的下載,可以自由選擇各種插件和平臺。

請前往:https://caddyserver.com/download 下載。 也可以使用這個一鍵安裝腳本:

技術漫談|快速上手更簡單的 Web 服務器——Caddy

完成之後,我們可以嘗試執行下caddy -version。 當你看到有有類似:Caddy 0.10.9,即表示安裝成功。

技術漫談|快速上手更簡單的 Web 服務器——Caddy

在命令行裡面直接輸入caddy,然後打開瀏覽器輸入: http://ip:2015。 看到什麼了嗎? 你得到了一個404頁面。Caddy 已經成功運行了。相比與其他瀏覽器需要各種配置文件才能運行相比,這就是 Caddy 的簡單之處,不需要任何配置文件即可運行。當然,在我們需要各種高級功能的時候,配置文件還是必不可少的。

默認情況下,Caddy 運行在2015 端口。我們可以用 Caddy 強大的命令行工具來自定義運行端口。

技術漫談|快速上手更簡單的 Web 服務器——Caddy

在無配置文件的情況下,Caddy 默認是映射當前程序執行目錄的所有文件。因此我們可以快速創建一個文件:

技術漫談|快速上手更簡單的 Web 服務器——Caddy

再次刷新瀏覽器,剛才我們寫的 Hello Caddy 已經出現在頁面上了

技術漫談|快速上手更簡單的 Web 服務器——Caddy

Caddy 各種強大的功能還得需要 Caddyfile 體現。我們可以在任意目錄放置我們的配置文件,通過命令行caddy -conf 即可指定

技術漫談|快速上手更簡單的 Web 服務器——Caddy

這裡簡單解釋下,0.0.0.0 表示我們將網站綁定至可以訪問到本機的任意一個 IP;8080表示我們將網站暴露在8080端口; root 參數則表示網站的根節點。這就是最簡單的一個Host 網站的配置。

當前我們可以對網站添加更多的配置。比如設置響應過期時間,啟用 gzip, 指定各種日誌的輸出端。

技術漫談|快速上手更簡單的 Web 服務器——Caddy

什麼時候你會需要反向代理呢?想象你有一個前後端分離的程序。前端是通過 JS 發送 Ajax 請求後端 API。默認情況下前端程序佔用一個端口,後端佔用一個另外端口。我們會遇到兩個問題: CORS(跨域請求)和額外的 Options 請求。 這個時候我們就可以使用反向代理讓前端和後端共享一個端口。

那怎麼做呢,在 Caddy 裡面也特別簡單,假設我們的前端就是上面那樣,我們的後面之前都運行在:http://ip:4000 下面。而且我們的 後端 API URL 裡面都有 /api

技術漫談|快速上手更簡單的 Web 服務器——Caddy

這裡的配置的意思是說,當瀏覽器收到所有包含:8080/api 的請求都會自動轉發到127.0.0.1:4000/api 這個地址,而:8080/api 後面的地址會自動轉發下去,而transparent這個設置保證了我們的轉發不會在瀏覽器生成任何額外的301 或者302請求。

技術漫談|快速上手更簡單的 Web 服務器——Caddy

Caddy 另外一個亮點就是,能為已經綁定域名的在公網運行的服務器自動從 Let's Encrypt生成和下載 HTTPS 證書,讓你的網站支持 HTTPS 協議訪問,保證網站數據傳輸的安全。很簡單,你所需的僅僅是將綁定的 IP 改成域名。

技術漫談|快速上手更簡單的 Web 服務器——Caddy

再次運行Caddy,按照提示輸入你的 Email 之後。Caddy 會自動幫你獲取並啟用 HTTPS 證書。

技術漫談|快速上手更簡單的 Web 服務器——Caddy

通過上面的例子,我們可以看到 Caddy的快速上手能力和超級實用的 HTTPS 功能。同時 Caddy 還提供了一大堆的插件供我們使用。比如直接訪問 Markdown 文件、Host Git 倉庫的文件,將自身 Metric 數據傳到 Prometheus 等等。

快去試試吧!

技術漫談|快速上手更簡單的 Web 服務器——Caddy


分享到:


相關文章: