CADDY 筆記
安裝:
//官方推薦一鍵安裝指令碼
/*
curl https://getcaddy.com | bash -s personal
或者
wget -qO https://getcaddy.com | bash -s personal http.git,dns
然後 which caddy 可以看到caddy安裝到了/usr/local/bin/caddy
此時執行 caddy 再開啟2015埠 就可以看到web頁面了
*/
複製程式碼
Caddy配置
1.建立配置檔案
-
配置檔案放在 /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
2.設定開機啟動
systemd system + d 其中的d就是daemon 守護程式
//如何配置systemd
sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linuxsystemd/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狀態
複製程式碼
3.編輯caddyfile
詳情檢視文件.
如果修改了Caddyfile但沒有生效,需要執行一下 sudo systemctl restart caddy.service 來重啟caddy
4.caddyfile格式
1: localhost:8080
地址可以帶一個埠號,那麼 caddy 只會在這個埠上開啟 http 服務,而不會開啟 https,如果不 寫埠號的話,caddy 會預設繫結 80 和 443 埠,同時啟動 http 和 https 服務。地址後面可以 再跟一大堆指令(directive)。Caddyfile 的基本格式就是這樣,由一個網站地址和指令組成。
2.指令
指令可以為網站開啟某些功能.
gzip | browse | log /var/log/caddy/access.log |tls 391086388@qq.com | root /var/www
-
log 為網站開始日誌記錄,後面的路徑為日誌路徑
-
tls 自動申請https證照 郵箱為CA申請人的郵箱
redir / wzfou.com/archive/{ur… 301
-
redir 指令帶了三個引數,意思是把所有的請求使用 301 重定向,這個指令在給網站換域名時很有用在這個例子裡還使用了 {uri} 這樣的佔位符(placeholder),詳細的列表可以在這裡查詢到:caddyserver.com/docs/placeh…
tls /etc/ssl/cert.pem /etc/ssl/key.pem
-
tls分別傳了證照和私鑰的路徑,這樣的話 caddy 就不會去自動申請證照,而是使用路徑給出證照
wzfou.com
gzip
log /var/log/caddy/access.log
tls iwzfou@gmail.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}
}
//Caddyfile
//這是指令中複雜的一種,可以帶很多引數,所以需要{}括起來.比如上面的herder指令
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 框架上使用。
複製程式碼
多域名網站
wzfou.com {
gzip
log /var/log/caddy/wzfou_com.log
tls iwzfou@gmail.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}
}
}
wzfou.com{
tls iwzfou@gmail.com
log /var/log/caddy/wzfou_com.log
redir / https://wzfou.com/{uri} 301
}
基本的 caddy 配置就這些,更多的內容需要查閱官網文件:
https://caddyserver.com/docs。
echo "http://gongluchen.com {
timeouts none
redir https://gongluchen.com{url}
}
https://gongluchen.com {
root /usr/local/caddy/www/file
timeouts none
tls 39108638@qq.com
gzip
filemanager / /usr/local/caddy/www/file {
database /usr/local/caddy/filemanager.db
}
}" > /usr/local/caddy/Caddyfile
複製程式碼
localhost:2018
gzip
browse
複製程式碼
$ caddy 就可以當網盤了