使用Caddy一键部署网站+自动SSL小绿锁

Caddy是一个对标Nginx的 Web 容器,采用Golang编写,主打采用更少的配置来完成需求。特点如下:

  1. 自动申请SSL证书
  2. 自动续期证书
  3. 极简的配置项
  4. 一行配置反代

Docker Compose 安装(推荐)

准备工作

在安装之前,需要准备一个配置文件 Caddyfile,内容如下:

# 引入所有配置文件
import /conf/*.caddy

安装

Docker Compose文件献上:

version: "3.7"
services:
  caddy:
    image: caddy:latest
    restart: unless-stopped
    networks:
      - persist
      - default
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ../data/caddy/Caddyfile:/etc/caddy/Caddyfile
      - ../data/caddy/site:/srv
      - ../data/caddy/conf:/conf
      - caddy_data:/data
      - caddy_config:/config

volumes:
  caddy_data:
  caddy_config:

networks:
  persist:
    driver: bridge
    attachable: true
  default:
    name: compose_default
    external: true

这里注册一个网络以及加入compose网络的主要目的是为了方便的反代其它容器

配置站点

所有的站点都配置/conf目录,所以要在映射的目录下编写配置文件,建议比较复杂的话就一个站点一个配置文件。
每一个配置文件后缀名为:.caddy, 增加配置文件后记得重启或者重新加载配置文件生效

反代同网络中的容器

可以直接使用容器名的前提是容器与caddy处于同一网络
domain {
    reverse_proxy container:port
}

# 例如
www.example.com {
    reverse_proxy web_server:80 # 80可以省略
}

带路径的反代

domain {
    reverse_proxy path target:port
}

# 例如
www.example.com {
    reverse_proxy /api/* web_sever:80
}

想反代指定路径的请求,可以通过handle达到目的,同时还可以 Rewrite 重写请求来满足更定制化的需求:

domain {
    handle path_reg {
        rewrite match_reg target_path
        reverse_proxy target:port
    }
}

# 例如
www.example.com {
    handle /api/v1/* {
        rewrite * /api{path}
        reverse_proxy web_server:80
    }
}

更多需求可以查看官方文档

none
最后修改于:2024年07月28日 23:14

评论已关闭