自动 HTTPS
Let's Encrypt、on-demand TLS 概念。
30 分钟
自动 HTTPS
Caddy 的核心卖点是 开箱即用的 TLS:指定域名后自动向 Let's Encrypt 申请、续期证书。对照 ngx-ssl,无需 certbot 与 ssl_certificate 路径配置。
学习目标
- 理解 Caddy ACME 自动申请与续期流程
- 配置 HTTP→HTTPS 与裸域→www 跳转
- 了解 on-demand TLS 概念与生产慎用场景
核心内容
自动证书如何工作
Caddy 启动 → 解析站点域名 → ACME HTTP-01 / TLS-ALPN-01
→ 证书写入 /var/lib/caddy → 自动续期(到期前)
前提:DNS A/AAAA 指向本机(dns-records),80 或 443 可从公网访问。本地开发可用 tls internal 自签。
CodeRoadMap 风格跳转
coderoadmap.cn {
redir https://www.coderoadmap.cn{uri} permanent
}
www.coderoadmap.cn {
# reverse_proxy ...
}
等价 Nginx 的 return 301 https://www.coderoadmap.cn$request_uri。Caddy 不会 为纯 HTTP 站点自动证书 unless 配置了 HTTPS 站点块。
测试与 staging
{
acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
}
staging 证书不被浏览器信任,用于验证 dns-troubleshoot 与防火墙。验证通过后改回默认 Let's Encrypt 生产 CA。
on-demand TLS(概念)
{
on_demand_tls {
ask http://127.0.0.1:8080/caddy/ask
}
}
https:// {
tls {
on_demand
}
reverse_proxy ...
}
适用于 多租户自定义域名;需 ask 接口防滥用。CodeRoadMap 固定 www.coderoadmap.cn,生产用显式域名块即可,与 Nginx + certbot 固定证书策略一致。
后端是否还要 HTTPS
Caddy → Spring Boot / Next.js 仍用 **http://127.0.0.1**(同机信任边界)。跨主机 upstream 应内网 TLS(kubernetes-essentials 另论)。
练习
- 用 staging CA 申请测试证书并观察
/var/lib/caddy - 写裸域→www 的
redir块并对照 Nginx 301