自动HTTPS

当符合下面一些合理的标准时,Caddy会自动为所有站点启用HTTPS:

  • 主机名
    • 不为空
    • 不是localhost
    • 不是一个IP地址
    • 不超过一个通配符(*)
    • 通配符必须是最左边的标签
  • 没有显式指定端口为80
  • 没有显式指定使用http协议
  • TLS没有在站点的定义中被关闭
  • 不是你自己提供的证书和密钥
  • Caddy能够绑定到端口80和443(除非使用DNS验证)

Caddy还会将所有HTTP请求重定向到与HTTPS对应的地址,只要Caddyfile中没有定义主机名的纯文本变体。


安装部署

  • docker-compose.yml
version: "3"

services:
  caddy:
    container_name: caddy
    image: caddy:alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "80:80/udp"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy/:/data/caddy/
  • Caddyfile
:80 {
  redir https://{host}{uri}
}

uing.vip {
  log {
    output stdout
    format console
    level  ERROR
  }
  root * /var/www/uing.vip
  handle_errors {
    rewrite * /404.html
    file_server
  }
  file_server
}

gitea.uing.vip {
  log {
    output stdout
    format console
    level  ERROR
  }
  reverse_proxy gitea:3000
}

如果需要接入 Cloudflare CDN 上

  1. 打开 https://dash.cloudflare.com/ 注册登录
  2. 添加网站,更改域名的 DNS
  3. 打开 https://dash.cloudflare.com/profile/api-tokens
  4. API 令牌 -> 创建 API 令牌 -> 编辑区域 DNS -> 选择模板 -> 区域资源 -> 对应网站
  5. 获取到的API KEY -> docker-compose.yml -> caddy 容器 -> 替换 CF_API_TOKEN 环境变量 -> 替换 DOMAIN 环境变量(也可以是二级或三级域名)
  6. https://dash.cloudflare.com -> 对应网站
  7. SSL/TLS -> 源服务器 -> 源证书 -> 经过身份验证的源服务器拉取 -> 打开
  8. SSL/TLS -> 概述 -> 您的 SSL/TLS 加密模式为 -> 完全(严格)
  • docker-compose.yml
version: "3"
services:
  caddy:
    container_name: caddy
    build: 
      dockerfile: ./caddy-cloudflare-Dockerfile
    restart: unless-stopped
    depends_on:
      - sing-box
      # - subconverter
    ports:
      - "80:80"
      - "80:80/udp"
      - "443:443"
      - "443:443/udp"
    environment:
      - CF_API_TOKEN=XXX
      - DOMAIN=XXX
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy:/data/caddy
  • Caddyfile
{env.DOMAIN} {
  log {
    output stdout
    format console
    level  ERROR
  }
  reverse_proxy gitea:3000
}
  • caddy-cloudflare-Dockerfile
FROM caddy:builder-alpine AS builder
RUN xcaddy build --with github.com/caddy-dns/cloudflare

FROM caddy:alpine
COPY --from=builder /usr/bin/caddy /usr/bin/caddy

相关连接