淺談|WEB 伺服器 -- Caddy
淺談|WEB 伺服器 -- Caddy
2018年03月28日 12:38:00 yori_chen 閱讀數:1490 個人分類: serverCaddy
Caddy伺服器(或稱Caddy Web)是一個開源的,使用 Go 編寫,支援 HTTP/2 的 Web 服務端,說到Web 伺服器,我們大多想到的是 Apache 和 Nginx,在擁有了強大的 Nginx 以後我們為什麼還需要 Caddy?
優點:
- 自動支援HTTP/2協議
- 使用 Let’s Encrypt 讓你的站點全自動變成全站HTTPS,無需任何配置,當然您可以使用自己的金鑰和證書
- 得益於 Go 的特性,Caddy 只是一個小小的二進位制檔案,沒有依賴,易於部署/使用 配置起來十分簡便
- 可以合理使用多核
- Caddy 對 WebSockets 有很好的支援
- 自動把 Markdown 轉成 HTML
- 完全支援最新的IPv6
- 以自定義格式建立日誌
- 適用於所有已知的平臺 - Windows,Linux,BSD,Mac,Android
缺點:
要說它的缺點,就是效率不如Apache、Nginx,因此對於以下幾種還是十分友好的
推薦場景:
- 作為 個人部落格的 Server
- 作為 靜態頁面的 WebServer
- 反向代理,管理多個站點
- 微服務 等等…
安裝
Caddy 提醒定製化的下載,可以自由選擇各種外掛和平臺,請前往官網: https://caddyserver.com/download 下載
一、一鍵指令碼安裝(非商業版本)1:
curl https://getcaddy.com | bash -s personal
指令碼執行完成後,執行 which caddy
,可以看到 caddy 已被安裝到了 /usr/local/bin/caddy;caddy -version
檢視版本號
二、手動安裝(需要商業許可證)
- https://caddyserver.com/download 進入到 caddy 官網的下載介面,選擇平臺和外掛
- 然後使用下方 Direct link to download 內的連結即可
- 解壓之後用 cp 命令放到 /usr/local/bin/caddy 就完成了安裝
執行
caddy
輸入 caddy
,然後開啟瀏覽器輸入: http://ip:2015 ,得到了一個404頁面,Caddy 已經成功運行了
(1)、在無配置檔案的情況下,Caddy 預設是對映當前程式執行的目錄所有檔案(即/usr/local/bin),因此可以建立一個檔案:
touch index.html
echo "<h1>Hello Caddy...</h1>" >> index.html
重新整理瀏覽器, Hello Caddy… 已經出現在頁面上
(2)、預設情況下,Caddy 執行在 2015 埠,可以使用 Caddy 命令列工具來自定義執行埠
例:改為執行在80埠
caddy -port 80
其他幫助:
caddy -h
配置檔案
一、Host網站配置
Caddy 的各種強大功能還得需要 Caddyfile 來體現,Caddy 不強制你把配置檔案放到哪個特定資料夾,可以在任意目錄放置我們的配置檔案,通過命令列 caddy -conf 即可指定
建立配置檔案(本文我們把配置檔案放在/usr/local/bin/下)
touch /usr/local/bin/Caddyfile #建立配置檔案
chown -R root:www-data /usr/local/bin #設定目錄資料許可權
編輯 /usr/local/bin/Caddyfile 檔案
echo -e ":80 {
root /usr/local/bin/www
}" > /usr/local/bin/Caddyfile
- 解釋
- 這是一個最簡單的 Host 網站配置
- ‘:80’表示將網站繫結至可以訪問到本機的任意一個IP,暴露在80埠,也可以寫成 ‘0.0.0.0:80’
- root 引數則表示網站的根節點
通過 caddy -conf /usr/local/bin/Caddyfile
命令用Caddyfile配置檔案方式執行Caddy
- 拓展配置
- 設定響應過期時間,啟用 gzip, 指定各種日誌的輸出端等等
echo -e "0.0.0.0:80 {
root /usr/local/www/
timeouts none #響應過期時間 none - 不過期 60s - 1分鐘過期
gzip #啟用gzip
log /var/log/caddy/access.log #日誌
errors /var/log/caddy/error.log #錯誤日誌 }" > /usr/local/bin/Caddyfile
二、反向代理配置
echo -e ":80/api {
proxy / 127.0.0.1:8080/api {
transparent
}
}" > /usr/local/bin/Caddyfile
- 解釋:
- 當瀏覽器收到所有包含:80/api 的請求都會自動轉發到127.0.0.1:8080/api 這個地址
- transparent 這個設定保證了轉發不會在瀏覽器生成任何額外的 301 或者 302 請求
三、自動HTTPS
為已經繫結域名的伺服器自動從 Let’s Encrypt 生成和下載 HTTPS 證書,支援 HTTPS 協議訪問,你只需要將繫結的 IP 換成 域名 即可
echo -e "xxx.com {
root /var/www/html/
}" > /usr/local/bin/Caddyfile
執行Caddy,按照提示輸入你的 Email 之後,Caddy 會自動幫你獲取並啟用 HTTPS 證書
Caddy 簡單易用、自動 HTTPS ,此外 Caddy 還提供一大堆的外掛供我們使用,是一款不錯的 Web 伺服器
- (1)、需要 curl 檔案傳輸工具支援,如果出現
-bash: curl: command not found
請先安裝 curl
(2)、You must specify a personal or commercial license; see getcaddy.com for instructions.
– 您必須指定個人或商業許可證; 有關說明,請參閱 https://getcaddy.com
假設有非商業許可證,請使用:curl https://getcaddy.com | bash -s personal
或者wget -qO- https://getcaddy.com | bash -s personal
您購買了商業許可證,則必須設定您的帳戶,環境變數中的ID和API金鑰:export CADDY_ACCOUNT_ID = ...
export CADDY_API_KEY = ...
然後使用:curl https://getcaddy.com | bash -s commercial
↩