Caddy 簡(jiǎn)介
Caddy官網(wǎng)
Caddy 是由go語(yǔ)言開(kāi)發(fā)的web 服務(wù)器 ,和nginx 功能作用相同。但是區(qū)別在于caddy 沒(méi)有很多的依賴,或者說(shuō)是插件。并且 caddy 實(shí)現(xiàn)了 ssl 證書(shū)每三個(gè)月自動(dòng)續(xù)期,ssl 證書(shū)免費(fèi) 。這意味著 使用 caddy 作為web 服務(wù)器 不再有nginx 的 ssl 證書(shū) 到期且付費(fèi)的困擾。
以上優(yōu)點(diǎn)是我研究caddy的動(dòng)力之一。
安裝Caddy
centos7
yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy
查看caddy狀態(tài)
systemctl status caddy
要啟動(dòng)caddy,需要建立一個(gè)root用戶以外的賬戶,我這里新建的賬戶叫做caddy,以下為caddy的配置過(guò)程
建立一個(gè)用于存放網(wǎng)頁(yè)文件的目錄,如/var/www/html,命令如下:
mkdir /var/www
mkdir /var/www/html
建caddy用戶
adduser -r -d /var/www/html -s /sbin/nologin caddy
建立caddy去加載配置文件的路徑
mkdir /etc/caddy
建立一個(gè)空的caddy工作配置參數(shù)文件
touch /etc/caddy/Caddyfile
設(shè)置路徑的訪問(wèn)權(quán)限
chown -R root:caddy /etc/caddy
創(chuàng)建用于存放ssl證書(shū)的路徑
mkdir /etc/ssl/caddy
chown -R caddy:root /etc/ssl/caddy
chmod 0770 /etc/ssl/caddy
創(chuàng)建用于存放日志的路徑
mkdir /var/log/caddy
chown -R caddy:root /var/log/caddy
最后再改一下/var/www/html 這個(gè)用于存放網(wǎng)頁(yè)的路徑權(quán)限
chown caddy:caddy /var/www/html
改一下配置文件里面的用戶信息
查看caddy.service 文件位置
systemctl status caddy
查看 用戶和組信息
cat /usr/lib/systemd/system/caddy.service
用戶和組都是caddy就不用改了。
設(shè)置caddy進(jìn)程開(kāi)機(jī)自啟
systemctl daemon-reload
systemctl enable caddy.service
現(xiàn)在還不能正常成功啟動(dòng)caddy呢,因?yàn)檫€沒(méi)有配置網(wǎng)站參數(shù)信息。
配置網(wǎng)站信息
cd /etc/caddy/
vi /etc/caddy/Caddyfile
Caddyfile文件內(nèi)容
www.xxx.com {
# Set this path to your site's directory.
root * /var/www/html
#log /var/log/caddy/caddy.log
# Email
tls user@163.com
# Enable the static file server.
file_server
# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080
}
上傳前端網(wǎng)頁(yè)文件到 /var/www/html目錄下
啟動(dòng)caddy服務(wù)
systemctl start caddy
查看服務(wù)啟動(dòng)狀態(tài)
systemctl status caddy -l
基本命令
查看caddy的幫助文檔
caddy
Caddy后臺(tái)服務(wù)運(yùn)行
caddy start
將Caddyfile轉(zhuǎn)化為JSON配置 或 查看 Caddyfile語(yǔ)法是否正確
caddy adapt
重啟
systemctl daemon-reload
systemctl restart caddy.service
查看caddy的狀態(tài)
systemctl status caddy.service
指定配置文件運(yùn)行caddy
caddy run --config /etc/caddy/Caddyfile
caddy start --config /etc/caddy/Caddyfile
查看日志
journalctl --no-pager -u caddy
Caddyfile 配置全量配置信息
(handle_info_log) {
log {
output file /var/log/caddy/info.log {
roll_size 100MiB
roll_keep_for 30d
}
format console {
time_format wall
time_local
}
level INFO
}
}
(handle_error_log) {
log {
output file /var/log/caddy/error.log {
roll_size 30MiB
roll_keep_for 30d
}
format console {
time_format wall
time_local
}
level ERROR
}
}
(handle_errors) {
handle_errors {
rewrite * /{err.status_code}.html
file_server
}
}
www.xxx.com {
encode gzip
import handle_errors
import handle_info_log
import handle_error_log
handle /b/* {
root * /opt/web
try_files {path} /b/index.html
file_server
}
handle /a/* {
root * /opt/web
file_server
}
reverse_proxy /framework/* {
header_down Access-Control-Allow-Origin *
header_down Access-Control-Allow-Methods GET,POST,OPTIONS
header_down Access-Control-Allow-Headers X-Requested-With
to localhost:8081
}
reverse_proxy /example/* {
to localhost:8081
}
@logsurl {
path_regexp logsurl ^/log/(.*)$
}
rewrite @logsurl /framework/{http.regexp.logsurl.1}
@upmsurl {
path_regexp upmsurl ^/upms/(.*)$
}
rewrite @upmsurl /framework/{http.regexp.upmsurl.1}
@systemsurl {
path_regexp systemsurl ^/system/(.*)$
}
rewrite @systemsurl /framework/{http.regexp.systemsurl.1}
@workflowsurl {
path_regexp workflowsurl ^/workflow/(.*)$
}
rewrite @workflowsurl /framework/{http.regexp.workflowsurl.1}
}
www.xxx.com : 80 {
...
}
解釋說(shuō)明
客戶端發(fā)送以下請(qǐng)求
https://www.xxx.com/framework/log/queryallLogs。
caddy 服務(wù)器會(huì)因?yàn)槁窂街械?https://www.xxx.com 開(kāi)始 走下面這個(gè)代碼塊:
www.xxx.com {
}
接著 /framework/ 會(huì)匹配到 如下代碼塊 :文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-692072.html
reverse_proxy /framework/* {
header_down Access-Control-Allow-Origin *
header_down Access-Control-Allow-Methods GET,POST,OPTIONS
header_down Access-Control-Allow-Headers X-Requested-With
to localhost:8081
}
@logsurl {
path_regexp logsurl ^/log/(.*)$
}
rewrite @logsurl /framework/{http.regexp.logsurl.1}
此時(shí) reverse_proxy 反向代理 將 https://www.xxx.com/framework/代理成
https://localhost:8081;
那么 完整的路徑地址 就是 https://localhost:8081/log/queryallLogs。
接著,caddy 發(fā)現(xiàn) 該路徑的uri 是 以 /log/ 開(kāi)頭的,這時(shí) 路徑重寫(xiě)指令rewrite 生效,最終路徑變成 https://localhost:8081/framework/log/queryallLogs。
祝各位小伙伴學(xué)習(xí)愉快,歡迎交流。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-692072.html
到了這里,關(guān)于SSL 證書(shū)免費(fèi),自動(dòng)續(xù)期的web服務(wù)器Caddy,Caddy2 實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!