您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Linux下如何配置Caddy”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux下如何配置Caddy”這篇文章吧。
Caddy是一款快速,易用的生產型開源Web服務器,使您的工作效率更高。適用于Windows,Mac,Linux,BSD,Solaris和Android
用過 golang 的應該都知道,golang 程序基本上不會有各種依賴,都是光禿禿一個可執行程序,cp 到 /usr/local/bin
就算安裝完成了,所以說安裝 caddy 是很簡單的,我給出三種方法。
腳本安裝” data-anchor-id=”vca7″>
curl -s https://getcaddy.com | bash
caddy 官方給出了一個安裝腳本,執行上面的命令就可以一鍵安裝 caddy,等執行結束后,使用 which caddy
,可以看到 caddy 已經被安裝到了 /usr/local/bin/caddy
https://caddyserver.com/download 點這個鏈接進入到 caddy 官網的下載界面,網頁左側可以選擇平臺和插件,如果在 Linux 服務器上使用的話,platform 選擇 Linux 64-bit 就可以了,plugins 如果暫時不需要的話,可以不選。然后點擊下面的 DOWNLOAD 按鈕,就下載到 caddy 了。同理,解壓之后用 cp 命令放到 /usr/local/bin/caddy
就完成了安裝。
go get github.com/mholt/caddy/caddy
對于安裝了 golang 編譯器的同學,只需要執行 go get 就能到 $GOPATH/bin 里,是否 cp 到 /usr/local/bin
里就看心情了。使用源碼安裝可以安裝到最新版本的 caddy,功能上一般是最新的,而且因為是本地編譯,性能可能會稍微高一些,但是可能會存在不穩定的現象。
Caddy 的配置文件叫做 Caddyfile
,Caddy 不強制你把配置文件放到哪個特定文件夾,默認情況下,把 Caddyfile 放到當前目錄就可以跑起來了,如下:
echo 'localhost:8888' >> Caddyfileecho 'gzip' >> Caddyfileecho 'browse' >> Caddyfile caddy
在隨便一個目錄里執行上面代碼,然后在瀏覽器里打開 http://localhost:8888 發現 caddy 已經啟動了一個文件服務器。當臨時需要一個 fileserver 的時候(比如共享文件),使用 caddy 會很方便。
當然了,在生產環境使用的時候就不能這么草率的把配置文件放到當前目錄了,一般情況下會放到 /etc/caddy
里。
sudo mkdir /etc/caddy sudo touch /etc/caddy/Caddyfile sudo chown -R root:www-data /etc/caddy
除了配置文件,caddy 會自動生成 ssl 證書,需要一個文件夾放置 ssl 證書。
sudo mkdir /etc/ssl/caddy sudo chown -R www-data:root /etc/ssl/caddy sudo chmod 0770 /etc/ssl/caddy
因為 ssl 文件夾里會放置私鑰,所以權限設置成 770 禁止其他用戶訪問。
最后,創建一下放置網站文件的目錄,如果已經有了,就不需要創建了。
sudo mkdir /var/www sudo chown www-data:www-data /var/www
創建好這些文件和目錄了之后,我們需要把 caddy 配置成一個服務,這樣就可以開機自動運行,并且管理起來也方便。因為目前大多數發行版都使用 systemd 了,所以這里只講一下如何配置 systemd,不過 caddy 也支持配置成原始的 sysvinit 服務,具體方法看這里。
sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service # 從 github 下載 systemd 配置文件sudo systemctl daemon-reload # 重新加載 systemd 配置sudo systemctl enable caddy.service # 設置 caddy 服務自啟動sudo systemctl status caddy.service # 查看 caddy 狀態
基本的安裝配置搞定之后,最重要的就是如何寫 Caddyfile了。可以直接 vim /etc/caddy/Caddyfile
來修改 Caddyfile,也可以再自己電腦上改好然后 rsync 到服務器上。如果修改了 Caddyfile 發現沒有生效,是需要執行一下 sudo systemctl restart cadd.service
來重啟 caddy 的。
Caddfile的格式還是比較簡單的,首先第一行必須是網站的地址,例如:
localhost:8080或lengzzz.com
地址可以帶一個端口號,那么 caddy 只會在這個端口上開啟 http 服務,而不會開啟 https,如果不寫端口號的話,caddy 會默認綁定 80 和 443 端口,同時啟動 http 和 https 服務。
地址后面可以再跟一大堆指令(directive)。Caddyfile 的基本格式就是這樣,由一個網站地址和指令組成,是不是很簡單。
指令的作用是為網站開啟某些功能。指令的格式有三種,先說一下最簡單的不帶參數的指令比如:
railgun.moe # 沒錯,moe后綴的域名也可以哦 gzip
第二行的 gzip 就是一個指令,它表示打開 gzip 壓縮功能,這樣網站在傳輸網頁是可以降低流量。
第二種指令的格式是帶簡單參數的指令:
railgun.moe gzip log /var/log/caddy/access.log tls lengz@lengzzz.com root /var/www/
第三行,log 指令會為網站開啟 log 功能,log 指令后的參數告訴 caddy log 文件存放的位置。第四行的 tls 指令告訴 caddy 為網站開啟 https 并自動申請證書,后面的 email 參數是告知 CA 申請人的郵箱。(caddy 會默認使用 let’s encrypt 申請證書并續約,很方便吧)
另外,簡單參數也可能不只一個,比如 redir 指令:
railgun.moe gziplog /var/log/caddy/access.log tls /etc/ssl/cert.pem /etc/ssl/key.pem root /var/www/ redir / https://lengzzz.com/archive/{uri} 301
上面的 redir 指令帶了三個參數,意思是把所有的請求使用 301 重定向到 https://lengzzz.com/archive/xxx,這個指令在給網站換域名的時候很有用。另外 tls 指令變了,不單單傳 email一個參數, 而是分別傳了證書和私鑰的路徑,這樣的話 caddy 就不會去自動申請證書,而是使用路徑給出的證書了。
在這個例子里還使用了 {uri}
這樣的占位符(placeholder),詳細的列表可以在這里查詢到:https://caddyserver.com/docs/placeholders。
最后一種指令是帶復雜參數的,這種指令包含可能很多參數,所以需要用一對花括號包起來,比如 header 指令:
railgun.moe gziplog /var/log/caddy/access.log tls lengz@lengzzz.com root /var/www/ header /api { Access-Control-Allow-Origin * Access-Control-Allow-Methods "GET, POST, OPTIONS"-Server } fastcgi / 127.0.0.1:9000 php { index index.php } rewrite { to {path} {path}/ /index.php?{query} }
6-10 行的 header 指令代表為所有的 /api/xxx 的請求加上 Access-Control-Allow-Origin 和 Access-Control-Allow-Methods 這兩個 header,從而能支持 javascript 跨域訪問 ,第 9 行代表刪除 Server header,防止別人看到服務器類型。
11-13 行使用了 fastcgi 指令,代表把請求通過 fastcgi 傳給 php,ruby 等后端程序。
14-15 行,使用了 rewrite 指令,這個指令的作用是 服務器內部重定向 在下面的參數 to
后面,又跟了三個參數,這個功能上有點類似 nginx 的 try_files
。告訴 caddy 需要先查看網址根目錄 /var/www 里有沒有 {path} 對應的文件,如果沒有再查看有沒有 {path} 對應的目錄,如果都沒有,則轉發給 index.php 入口文件。這個功能一般會用在 PHP 的 MVC 框架上使用。
隨著一步步完善這個 Caddyfile,目前這個版本的 Caddyfaile 已經可以直接在網站中使用了。
剛才說的一直都是單個域名的網址,那么如果在同一個服務器上部署多個域名的網站呢?很簡單,只需要在域名后面跟一個花括號擴起來就可以了,如下:
railgun.moe { gziplog /var/log/caddy/railgun_moe.log tls lengz@lengzzz.com root /var/www/ header /api { Access-Control-Allow-Origin * Access-Control-Allow-Methods "GET, POST, OPTIONS"-Server } fastcgi / 127.0.0.1:9000 php { index index.php } rewrite { to {path} {path}/ /index.php?{query} } } lengzzz.com { tls lengz@lengzzz.comlog /var/log/caddy/lengzzz_com.log redir / https://railgun.moe/{uri} 301 }
以上是“Linux下如何配置Caddy”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。