欢迎光临
我们一直在努力

如何安装使用Caddy配合CloudflareCDN实现自动HTTPS/QUIC

第一步,使用Caddy官方安装脚本安装

1
curl https://getcaddy.com | bash -s personal tls.dns.cloudflare

最后面的tls.dns.cloudflare是插件名,用来使用cloudflare的API实现自动https

多个插件以逗号隔开,例如

1
curl https://getcaddy.com | bash -s personal tls.dns.cloudflare,http.git,http.cache

http.git可以使用git自动检查更新,可以一直同步指定文件夹到最新的代码,对PHP程序很有用

http.cache用于缓存请求

插件如果用不到没必要安装,但建议安装cache插件

第二步,创建一些文件文件夹并修改权限

1
2
3
4
5
6
mkdir -p /etc/caddy/conf
echo 'import ./conf/*' >> /etc/caddy/Caddyfile
mkdir /etc/ssl/caddy
chown -R www-data:www-data /etc/caddy
chown -R www-data:www-data /etc/ssl/caddy
chmod 0770 /etc/ssl/caddy

第三步,配置systemd脚本

修改一下

1
/etc/systemd/system/caddy.service

在service块内加入两行

1
2
Environment=CLOUDFLARE_EMAIL=example@mail.com
Environment=CLOUDFLARE_API_KEY=123456789

可以用一条命令搞定 (多谢@aRNoLD 指点)

1
curl https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service | sed 's/\[Service\]/\[Service\]\nEnvironment=CLOUDFLARE_EMAIL=example\@mail.com\nEnvironment=CLOUDFLARE_API_KEY=123456789/g' > /etc/systemd/system/caddy.service

更改前

01
02
03
04
05
06
07
08
09
10
11
12
13
14
[Unit]
Description=Caddy HTTP/2 web server
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
Restart=on-abnormal
; Do not allow the process to be restarted in a tight loop. If the
; process fails to start, something critical needs to be fixed.
StartLimitIntervalSec=14400
StartLimitBurst=10
......

更改后

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
[Unit]
Description=Caddy HTTP/2 web server
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
Restart=on-abnormal
Environment=CLOUDFLARE_EMAIL=example@mail.com
Environment=CLOUDFLARE_API_KEY=123456789
; Do not allow the process to be restarted in a tight loop. If the
; process fails to start, something critical needs to be fixed.
StartLimitIntervalSec=14400
StartLimitBurst=10

API KEY可以从cloudflare官网的My Profile-API Tokens-Global API Key找到

PS:如果使用其他DNS提供商,请前往官方文档查看具体用法

其实如果不使用Cloudflare CDN的话,也没必要配置DNS插件和API,因为如果域名直接指向本机IP的话,caddy会全部自动配置,但使用CDN的话, Let’s Encrypt 无法通过IP验证域名所有权,所以需要使用DNS的API

如果需要配置QUIC(HTTP3)

1
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp

这一行加入-quic

1
ExecStart=/usr/local/bin/caddy -quic -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp

查看是否配置成功

1
2
3
4
systemctl daemon-reload
systemctl enable caddy
systemctl start caddy
systemctl status caddy

这时应该已经成功运行

第四步,添加站点配置

所有的站点配置文件都放在/etc/caddy/conf文件夹下面

给出两个示例

反代:

1
2
3
4
5
6
7
8
9
example.com {
    gzip
    proxy / http://localhost:8080 {
        transparent
    }
    tls {
        dns cloudflare
    }
}

需要修改端口号。当然如果应用提供了更快速稳定的Unix Socket,也可以指定Unix Socket

PHP:

01
02
03
04
05
06
07
08
09
10
example.com {
     root /srv/www/example
     gzip
     # PHP-FPM Configuration for Caddy
     fastcgi / /run/php/php7.2-fpm.sock php {
         ext .php
         split .php
         index index.php
     }
 }

需要修改root网站根目录和fastcgiPHP版本号(如果是包管理器安装的php-fpm的话,面板/脚本安装的php请查看面板/脚本文档以确定Unix Socket文件路径

刚刚提到的cache插件,可以直接加一行cache启用

例如

01
02
03
04
05
06
07
08
09
10
example.com {
    gzip
    cache
    proxy / http://localhost:8080 {
        transparent
    }
    tls {
        dns cloudflare
    }
}

git插件的用法

01
02
03
04
05
06
07
08
09
10
11
example.com {
     root /srv/www/example
     gzip
     # PHP-FPM Configuration for Caddy
     fastcgi / /run/php/php7.2-fpm.sock php {
         ext .php
         split .php
         index index.php
     }
 }

指定git地址,root目录会自动同步到最新代码

更多插件和详细用法请参考官方文档

第五步,自动部署证书

重启,并稍等片刻

1
systemctl restart caddy

查看状态

1
systemctl status caddy

此时HTTPS和QUIC应该已经自动部署,并且caddy会自动把http请求跳转到https,无需手动配置

(请打开80端口和443端口,并且443端口同时打开TCP和UDP以便QUIC使用)

话很多其实复制粘贴两三分钟就搞完了,后续的证书续期等问题也不用自己管了,非常省心

调试

如果出了问题,请使用journalctl查看详细信息

1
journalctl -u caddy

还可以指定时间,例如5分钟

1
journalctl -u caddy --since "5 min ago"
 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:顶好爱迪 » 如何安装使用Caddy配合CloudflareCDN实现自动HTTPS/QUIC

分享到: 更多 (0)
avatar

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

射线服务专业快捷

联系我们联系我们
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活