淺談|WEB 服務器 -- Caddy


淺談|WEB 服務器 -- Caddy

Caddy

Caddy服務器(或稱Caddy Web)是一個開源的,使用 Go 編寫,支持 HTTP/2 的 Web 服務端,說到Web 服務器,我們大多想到的是 Apache 和 Nginx,在擁有了強大的 Nginx 以后我們為什么還需要 Caddy?

官網:https://caddyserver.com

優點:
  • 自動支持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. (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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM