当前位置: 首页 > 工具软件 > Caddy > 使用案例 >

Caddy

姜正初
2023-12-01

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

转载于:https://juejin.im/post/5bd955026fb9a0225f329e78

 类似资料:

相关阅读

相关文章

相关问答