Caddy 部署实操指南:Windows 环境下从入门到高级配置
				
									
					
					
						|  | 
							admin 2025年8月13日 10:57
								本文热度 1815 | 
					
				 
				
一、引言
Caddy 是一款现代化的 Web 服务器,以极简的配置和自动 HTTPS 特性著称。本文将结合实际操作,详细介绍在 Windows 系统中使用 Caddy 部署网站的全流程,涵盖安装、配置、证书申请及常见问题解决,帮助开发者快速上手。
二、Caddy 安装与基础配置
2.1 安装 Caddy
方法一:使用 Chocolatey 包管理器(推荐)
- 以管理员身份打开 PowerShell,执行以下命令安装 Chocolatey: 
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- 安装 Caddy: 
- 验证安装: 
方法二:手动安装
- 从  Caddy 官网 下载 Windows 64 位 ZIP 包,解压后将 - caddy.exe移动至- C:\Caddy目录。
 
- 将 - C:\Caddy添加到系统环境变量- Path中。
 
2.2 创建首个网站
- 创建网站根目录 - C:\Website,并在其中添加- index.html:
 
<h1>Hello from Caddy!</h1>
- 在桌面创建 - Caddyfile(无扩展名),输入以下内容:
 
localhost {
    root * C:\Website
    file_server
}
- 启动 Caddy: 
caddy run --config "$env:USERPROFILE\Desktop\Caddyfile"
- 访问 - http://localhost,应看到网页内容。
 
三、HTTPS 配置与证书自动申请
3.1 自动获取 Let's Encrypt 证书
默认情况下,Caddy 会自动为域名申请 Let's Encrypt 证书。修改 Caddyfile 为真实域名:
www.sdyzco.com.cn {
    root * C:\Website
    file_server
    tls wh@sdyzco.com.cn  # 填写邮箱用于证书管理
}
重启 Caddy 后,访问 https://www.sdyzco.com.cn,浏览器会显示安全锁标志。
3.2 处理 80 端口被占用问题
若 80 端口被其他服务占用,可仅使用 443 端口(TLS-ALPN-01 验证):
www.sdyzco.com.cn {
    root * C:\Website
    file_server
    tls wh@sdyzco.com.cn
    http_port 0  # 禁用 80 端口
}
3.3 使用阿里云 DNS 验证(高级场景)
当服务器无法开放 80/443 端口时,可通过 DNS 验证申请证书:
- 安装 Caddy 插件: 
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
xcaddy build --with github.com/caddy-dns/alidns
- 配置 - Caddyfile:
 
www.sdyzco.com.cn {
    root * C:\Website
    file_server
    tls {
        dns alidns {
            access_key_id YOUR_ALIYUN_ACCESS_KEY
            access_key_secret YOUR_ALIYUN_SECRET_KEY
        }
    }
}
四、多域名与子域名配置
4.1 主域名与 www 域名统一
sdyzco.com.cn, www.sdyzco.com.cn {
    root * C:\Website
    file_server
    tls wh@sdyzco.com.cn
}
4.2 子域名独立配置
app.sdyzco.com.cn {
    root * C:\AppWebsite
    file_server
    tls wh@sdyzco.com.cn
}
五、性能优化与安全配置
5.1 通用安全头设置
通过导入配置片段添加安全响应头:
(security) {
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        X-Frame-Options "SAMEORIGIN"
        -Server  # 移除服务器标识
    }
}
www.sdyzco.com.cn {
    import security
    # 其他配置
}
5.2 静态资源压缩与缓存
(compression) {
    encode gzip zstd
    minimum_length 256
}
(static_assets) {
    @static path *.js *.css *.png
    header @static Cache-Control "public, max-age=31536000"
}
www.sdyzco.com.cn {
    import compression
    import static_assets
    # 其他配置
}
六、服务化运行与日志管理
6.1 设置为 Windows 服务
使用 nssm 将 Caddy 配置为开机自启服务:
choco install nssm
nssm install caddy
# 在图形界面中指定 Caddy 路径和配置文件路径
6.2 日志分割与存储
www.sdyzco.com.cn {
    log {
        output file "C:/Logs/caddy.log" {
            roll_size 50MiB  # 单文件最大 50MB
            roll_keep 14     # 保留 14 个历史文件
        }
    }
    # 其他配置
}
七、常见问题与解决方案
7.1 证书申请失败
7.2 404 错误
八、总结
Caddy 通过极简的配置和自动化特性,大幅降低了 HTTPS 部署门槛。本文覆盖了 Windows 环境下的安装、证书申请、多域名配置及性能优化,开发者可根据实际需求灵活调整配置。建议在生产环境中结合云服务商的安全组策略,并定期监控证书状态,确保服务稳定运行。
阅读原文:https://blog.51cto.com/wahu/13967500
该文章在 2025/8/13 17:06:07 编辑过