Docker 部署 Caddy 反代
Docker 部署 Caddy 反代教程
前言
Caddy 是一款功能强大且易于使用的 Web 服务器,以其自动 HTTPS 和简洁的配置而闻名。本教程将指导您如何使用 Docker 快速部署 Caddy 并将其配置为反向代理服务器。
之前曾经使用过Lucky和Traefik。
Lucky对于我来说,显得略微有些臃肿。好处是有webui,使用比较方便,功能也比较多,除了常规的自动申请证书,自动续订之外,还能DDNS,stun穿透等等。
Traefik的话,webui界面约等于没有,不过资源占用略低,http能自动跳转到https,也支持修改配置文件之后,自动重载。docker里面也支持标签自动发现等等功能。不过配置文件里面,域名和IP分成上下部分,修改起来不太方便。
准备工作
域名 (既然反代了,你总得有个自己的域名吧?)
目标服务器 (都要反代了,总的有个反代的目标吧?)
步骤
1. 创建项目目录

在你喜欢的地方,创建一个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

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项目页
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

BillGor
校验提示文案
丶Source
校验提示文案
图不图
校验提示文案
BillGor
校验提示文案
图不图
校验提示文案
丶Source
校验提示文案