Docker 部署 Caddy 反代

2025-01-06 16:13:45 8点赞 38收藏 4评论

Docker 部署 Caddy 反代教程

前言

Caddy 是一款功能强大且易于使用的 Web 服务器,以其自动 HTTPS 和简洁的配置而闻名。本教程将指导您如何使用 Docker 快速部署 Caddy 并将其配置为反向代理服务器。

之前曾经使用过Lucky和Traefik。

Lucky对于我来说,显得略微有些臃肿。好处是有webui,使用比较方便,功能也比较多,除了常规的自动申请证书,自动续订之外,还能DDNS,stun穿透等等。

Traefik的话,webui界面约等于没有,不过资源占用略低,http能自动跳转到https,也支持修改配置文件之后,自动重载。docker里面也支持标签自动发现等等功能。不过配置文件里面,域名和IP分成上下部分,修改起来不太方便。

准备工作

  • 域名 (既然反代了,你总得有个自己的域名吧?)

  • 目标服务器 (都要反代了,总的有个反代的目标吧?)

步骤

1. 创建项目目录

Docker 部署 Caddy 反代

在你喜欢的地方,创建一个caddy目录,并在目录下创建下一个data目录

2. 创建 Caddyfile.txt

Caddyfile 是 Caddy 的配置文件。

不过由于Caddy官方的docker镜像,并不支持由DNS验证来申请证书,

所以我们改用一个第三方的docker镜像,该镜像自动编译添加了官方的DNS验证申请证书的插件

镜像地址:sliamb/caddy

作者博客:caddy配置示例

镜像作者顺便修改了caddyfile为txt文件,更加方便飞牛编辑。

创建一个名为 caddyfile.txt 的文件并添加以下内容:

caddyfile.txt

{ #修改docker全局监听端口 http_port 8080 # 修改默认 HTTP 端口为 8080 https_port 8443 # 修改默认 HTTPS 端口为 8443,外网访问的时候。就是域名:8443 } # 泛域名配置 *.XXXXX.net { # 启用 TLS,使用 DNSPod 的 DNS-01 挑战申请泛域名证书 tls { dns dnspod ID,TOKEN } #tls { # dns alidns { # access_key_id XXXXXXXXXXX # access_key_secret XXXXXXXXXXXXX # } # } alidns的格式未经测试,根据镜像作者文档修改而来,可能存在出错的可能,请各位自行尝试。 # # 根据子域名配置反向代理,@AAA为服务名,保证上下一致即可,host后面则为外网访问域名,按需填写,proxy后面是内网ip,按需填写 @AAA host AAA.XXXXX.XXX handle @AAA { reverse_proxy 10.10.10.2:5666 } @BBB host BBB.XXXXX.XXX handle @BBBBB { reverse_proxy 10.10.10.1 } @CCC host CCC.XXXXXX.XXX handle @CCC { reverse_proxy 10.10.10.3:8080 } handle { respond 404#兜底规则,不匹配上面域名,则返回404 } }

说明:

  • 镜像支持DNS如下。

    --with github.com/caddy-dns/cloudflare --with github.com/caddy-dns/dnspod --with github.com/caddy-dns/tencentcloud --with github.com/caddy-dns/alidns --with github.com/caddy-dns/acmedns --with github.com/caddy-dns/godaddy --with github.com/caddy-dns/digitalocean --with github.com/caddy-dns/duckdns --with github.com/caddy-dns/namecheap --with github.com/caddy-dns/dynv6 --with github.com/caddy-dns/route53

3. 创建 docker-compose.yml

Docker 部署 Caddy 反代

services: caddy: pull_policy: always image: sliamb/caddy:latest container_name: caddy restart: always environment: - TZ=Asia/Shanghai - DNS=223.5.5.5,8.8.8.8 volumes: - /填写你刚才创建文件夹的路径:/data network_mode: "host"

说明:

使用host模式,性能会略好,但是可能会存在端口冲突问题,端口配置在caddyfile.txt的最开头,全局端口配置修改。

如果使用bridge模式,可以删除caddyfile.txt的全局端口配置,并映射80和443端口

4. 启动 Caddy

启动caddy,并在路由器开启转发caddy的https端口,也就是配置文件中的8443端口

5. 验证

  • 访问 http://aaa.example.com,请求将被代理到目标服务器。

总结

通过以上步骤,您已经成功使用 Docker 部署了 Caddy 并将其配置为反向代理服务器。

您可以根据需要修改 caddyfile.txt 文件来配置更多功能,例如负载均衡、缓存等。

您也可以参考官网文档,来访问您自己的静态html,来为自己创建一个独一无二的导航页。

并且社区插件也支持ddns等各种功能,有能力的可以自行编译docker镜像。

该镜像的caddy,并不支持动态重载配置文件,所以每次修改完配置文件,需要重启才会生效。这算是其中一个略微影响我使用的缺点。

参考文档

B站-脑脑脑Docker镜像作者博客镜像作者Github项目页


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
  • nas
    话题:nas 关注
4评论

  • 精彩
  • 最新
  • 还是lucky方便点

    校验提示文案

    提交
    是的,功能上lucky也更多。多一个选择嘛

    校验提示文案

    提交
    收起所有回复
  • 强啊杯大

    校验提示文案

    提交
  • 强啊杯大

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

Hiccup90

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
38
扫一下,分享更方便,购买更轻松