Caddy Logo

这篇文章简单介绍Caddy单容器部署,其主要目的是将Caddy作为反向代理的一个工具。

由于其用途是反向代理,需要用到Docker macvlan。设置步骤可以参考介绍Docker Macvlan的那片文章:Docker Macvlan配置介绍

本教程基于以下假设:

先创建一个文件夹方便管理,文件结构可以简单的像下面的:

caddy_intro
|-- Caddyfile
|-- README.md
`-- caddy

Caddy配置文件

guard.996.rip {
    reverse_proxy https://source.996.rip {
        header_up Host {http.reverse_proxy.upstream.hostport}
        transport http {
            tls
            tls_server_name source.996.rip
        }
    }
    tls <你的邮箱> {
        protocols tls1.2 tls1.3
    }
}

Docker部署


请事先配置好DNS,让域名指向对应的IP。将TTL时间调小一些,这样生效会比较快。

docker run -d --name caddy-reverse-proxy --restart unless-stopped \
    --network rip_996_demo_net \
    --ip "256.256.256.256" \
    --mac-address="GG:GG:GG:GG:GG:GG" \
    -v "$(pwd)/Caddyfile:/etc/caddy/Caddyfile" \
    -v "$(pwd)/caddy:/data/caddy" \
    caddy:2.1.1-alpine


注:通过此方法创建的容器,无需映射端口;请注意这种方法创建的容器不要开启不必要的服务(减少"Attack Surface"),以防黑客攻击。

通过docker-compose.yml部署

使用docker-compose.yml部署更加方便。示例如下:

version: "3"
services:
  caddy-server:
    image: caddy
    container_name: caddy-server
    networks:
      rip_996_demo_net:
        ipv4_address: "256.256.256.256"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy:/data/caddy
    mac_address: "GG:GG:GG:GG:GG:GG"
networks:
  rip_996_demo_net:
    external: true

使用场景

  • 保护源站,将Caddy部署在防御DDoS高的机器上面,比如OVH
  • 将Caddy部署在用户访问线路好的机房
  • 使用Caddy做静态资源缓存
Last modification:September 8th, 2020 at 04:27 am