Windows 上的 Caddy:一个二进制搞定自动 TLS
用 Caddy 在 Windows 跑小站点或反向代理:公网自动 TLS、实验内网证书,以及可验证的 Caddyfile。
测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1- 版本号
- 26100.33650
- 版本
- Standard / Datacenter
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 任务
Caddy 是单个 Windows 二进制,对公网 DNS 名字自动 HTTPS。适合:
- 有真实域名的小型内网/公网站点;
- Node/Python 前面的反代;
- 不想手工签证书的实验环境。
它不是 IIS 的完全替代:Windows 认证、IIS 模块、ASP.NET 特性都不等价。
下载 Windows amd64 zip,解压到 C:\caddy,把 caddy.exe 放进 PATH 或用全路径。
C:\caddy\caddy.exe versionC:\caddy\caddy.exe validate --config C:\caddy\CaddyfileC:\caddy\caddy.exe run --config C:\caddy\Caddyfilecaddy run 前台运行;caddy start 后台;caddy reload 应用新配置;caddy stop 停止。
Caddyfile:静态站
Section titled “Caddyfile:静态站”lab.example.com { root * C:/sites/lab file_server}公网 DNS 指向本机、80/443 可达时,Caddy 自动申请/续期证书,用 HTTP-01 或 TLS-ALPN,不需要手工 CSR。
实验名不解析公网:
lab.local { tls internal root * C:/sites/lab file_server}tls internal 用 Caddy 本地 CA;客户端要信任它(服务器 caddy trust,或客户端导入根 CA)。它不是公网证书。
app.example.com { reverse_proxy 127.0.0.1:3000}Caddy 默认设置 X-Forwarded-For、X-Forwarded-Proto、Host。WebSocket 由 reverse_proxy 处理,不需要单独 map。
响应头:
app.example.com { header { Strict-Transport-Security "max-age=31536000; includeSubDomains" X-Content-Type-Options "nosniff" -Server } reverse_proxy 127.0.0.1:3000}Windows 服务
Section titled “Windows 服务”Caddy 不装服务也能跑,但生产应该用服务。用 WinSW/NSSM 包 caddy.exe run --config C:\caddy\Caddyfile:
- 工作目录
C:\caddy; - 账户对二进制/配置/站点读,对 Caddy 数据目录写;
- 失败重启;
- 防火墙 80/443 只对目标网段。
不要让“服务 + 计划任务”同时管同一份配置/端口。
C:\caddy\caddy.exe validate --config C:\caddy\Caddyfilecurl.exe -I https://lab.example.com/curl.exe -I --resolve lab.example.com:443:127.0.0.1 https://lab.example.com/ -k检查证书 issuer/SAN、HTTP 跳转、应用收到的 X-Forwarded-*。
E1。实验室没有安装 Caddy。Caddyfile 是起点;Server 2025 上验证签发和服务包装后再标 E2。