外观
Caddy
类似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
}