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 就可以当网盘了