Administrator
发布于 2025-07-31 / 46 阅读
0
0

caddy配置反向代理和ssl证书申请

下载Caddy

caddy官网下载地址https://caddyserver.com/download。也可以直接点此下载linux amd64版本。

如果是需要申请泛域名证书则需要勾选对应dns提供商的插件,比如cloudflare

注意:cloudflare不再支持.cf, .ga, .gq, .ml,  .tk后缀域名使用api管理dns,也就是这些后缀的域名是不能通过cloudflare申请泛域名证书。

下载之后重命名为caddy拷贝到/usr/local/bin下即可。

配置文件Caddyfile

在任意目录新建一个文件Caddyfile, 推荐位置为/etc/caddy/Caddyfile

输入以下内容, 表示将www.mydomain.cf转发到localhost:16325,并且自动通过let's encrypt申请ssl证书,申请邮箱为my@qq.com.  开启tls则会默认把http重定向到https

www.mydomain.cf {
        reverse_proxy localhost:16325
        tls my@qq.com
}

如果是同时开启http和https访问则

 www.mydomain.cf:80  www.mydomain.cf:443{
        reverse_proxy localhost:16325
        tls my@qq.com
}

反向代理一般用于后端站点,前端站点则直接可以是静态站点,如果是docker运行的也可以反向代理

以下为静态站点配置,开启https, 站点根目录为/www/vue

www.mydomain.cf {
    tls my@qq.com
    root * /www/vue
    file_server
}

启动caddy

运行以下命令即可让caddy进入后台运行。其中/etc/caddy/Caddyfile是配置文件Caddyfile所在路径,--dapter caddyfile表示指定配置文件适配器为caddyfile格式,默认是json,caddyfile也可以翻译为json.

如caddy adapt --config /etc/caddy/caddyfile > /etc/caddy/file.json就是将caddyfile翻译为json并输出,然后caddy start的config参数指定为json文件即可。

caddy start --config /etc/caddy/Caddyfile --adapter caddyfile

caddy start是后台启动,但是日志会在当前控制台输出,关闭当前控制台也会继续运行

caddy run是前台启动,当前控制台关闭进程也会关闭

二者参数一致

添加到systemd运行

新建文件/usr/lib/systemd/system/caddy.service(centos)或者/etc/systemd/system/caddy.service(ubuntu),内容如下. 记得将User=my中my修改为有权限的用户名。

[Unit]
Description=Caddy HTTP/2 web server
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
User=my
Restart=on-abnormal

ExecStart=/usr/local/bin/caddy run --config=/etc/caddy/Caddyfile --adapter=caddyfile
ExecReload=/bin/kill -USR1 $MAINPID
; Use graceful shutdown with a reasonable timeout
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s
ProtectSystem=full
[Install]
WantedBy=multi-user.target

然后执行

systemctl enable caddy.service
systemctl start caddy.service
systemctl status caddy.service

 

添加开机自启

systemctl daemon-reload #激活你的systemd服务单元
systemctl enable caddy.service #启用设置好的服务
systemctl is-enabled caddy.service #测试是否设置成功


评论