Skip to content

Caddy

约 514 字大约 2 分钟

折腾

2025-06-13

类似nginx的工具,配置更简单,可自动申请证书

证书

通过ACME协议向Let's Encrypt证明自己域名所有权的过程叫Challenge(验证),目前有三种Challenge的方式:

  • HTTP-01: 需要开放80端口给Let's Encrypt验证
  • TLS-ALPN-01:需要443端口验证
  • DNS-01:通过再域名的txt记录中放置特定值证明域名所有权;可以颁发通配符证书(在 Let’s Encrypt 为您的 ACME 客户端提供令牌后,您的客户端将创建从该令牌和您的帐户密钥派生的 TXT 记录,并将该记录放在 _acme-challenge.<YOUR_DOMAIN> 下。然后 Let’s Encrypt 将向 DNS 系统查询该记录。如果找到匹配项,您就可以继续颁发证书!)

Caddyfile

重启配置:caddy reload --config /etc/caddy/Caddyfile docker中部署的话,在终端执行

example

{
	http_port 18888
	https_port 11443 
}

n.csoyi.xyz:11443 {
	tls {
		dns cloudflare OEnyv_fJKgC3BLiE1tV03tFiixsWnpAv9DlhIUsw
	}
	reverse_proxy 192.168.1.96:8888
}

2

{
	http_port 18888
	https_port 11443  # 这里写了后面的地址就不用写了
	acme_dns cloudflare {$CLOUDFLARE_API_TOKEN}
}
csoyi.xyz,www.csoyi.xyz {
	reverse_proxy 192.168.1.96:2333
}

a.csoyi.xyz {
	reverse_proxy 192.168.1.96:8080
}

b.csoyi.xyz {
	reverse_proxy 192.168.1.96:8090
}

n.csoyi.xyz {
	reverse_proxy 192.168.1.96:8888
}

{
    http_port 18888
    https_port 11443
    acme_dns cloudflare {$CLOUDFLARE_API_TOKEN}
    email [email protected]
}

# 主域名和 www 子域名
csoyi.xyz, www.csoyi.xyz {
    reverse_proxy 192.168.1.96:2333
}

# 通配符子域名
*.csoyi.xyz {
    reverse_proxy {
        to 192.168.1.96:{hostport}
        # 动态映射子域名到后端端口
        @a host a.csoyi.xyz
        to @a 192.168.1.96:8080
        @b host b.csoyi.xyz
        to @b 192.168.1.96:8090
        @n host n.csoyi.xyz
        to @n 192.168.1.96:8888
    }
}

# 只会申请2个证书 
{
    http_port 18888
    https_port 11443
    acme_dns cloudflare {$CLOUDFLARE_API_TOKEN}
    email [email protected]
}

csoyi.xyz, www.csoyi.xyz {
    reverse_proxy 192.168.1.96:2333
}

html.csoyi.xyz { 
	root * /var/www/html 
	file_server 
}

*.csoyi.xyz {
    map {host} {backend_port} {
        a.csoyi.xyz 8080
        b.csoyi.xyz 8090
        n.csoyi.xyz 8888
        default     8080  # 默认端口
    }
    reverse_proxy 192.168.1.96:{backend_port}
}

# 或者这样写直接隐射容器的端口
*.csoyi.xyz { 
	map {host} {upstream} { 
		n.csoyi.xyz n_container:8888 
		vw.csoyi.xyz vw_container:8989 
		ql.csoyi.xyz ql_container:5777 
		default default_container:8080 
		} 
	reverse_proxy {upstream}
}
  • 一个通配符证书:*.csoyi.xyz(覆盖 html.csoyi.xyz、a.csoyi.xyz、b.csoyi.xyz、n.csoyi.xyz 等)。
  • 一个多域名证书:包含 csoyi.xyz

*.maindomainA.com {
	tls {
		dns cloudflare XXXXXXXXXXXXXXXXXXXXXXXXXX
		resolvers 1.1.1.1
	}
	reverse_proxy /tautulli* 192.168.55.205:8181
	reverse_proxy /radarr* 192.168.55.207:7878
	reverse_proxy /sonarr* 192.168.55.207:8989
	reverse_proxy /info* 192.168.55.205:5960
	reverse_proxy /lidarr* 192.168.55.207:8686
	reverse_proxy 192.168.55.205:5055
	@app host app.maindomainA.com
	handle @app {
		reverse_proxy 192.168.55.205:32400
	}
	import /etc/caddy/caddy_security.conf
}

 *.domainy.com {
    tls {
        dns hetzner supersecret
    }

    @aaa host aaa.domainx.net
    handle @aaa {
        reverse_proxy 10.0.0.4:8080
    }

    @bbb host bbb.domainy.net
    handle @bbb {
        reverse_proxy 10.0.0.4:6000
    }