Caddy 入门:Caddyfile 结构与 file-server 静态站点示例
Caddy 是一个基于 Go 语言的开源 Web 服务器与反向代理工具,默认提供自动 HTTPS,配置方式简洁,也常被用来快速托管静态文件。
功能特性
- 自动 HTTPS:默认启用 HTTPS,自动完成 TLS 证书的申请与续期;HTTP 请求会自动重定向到 HTTPS,并内置 HSTS 响应头。
- 极简配置:支持声明式 Caddyfile,也支持 JSON 配置,可通过 API 实时更新和导出配置。
- 反向代理:覆盖 HTTP、FastCGI、WebSockets 场景;支持负载均衡、主动/被动健康检查、动态上游与重试。
- 静态资源托管:作为静态文件服务器,支持文件压缩、虚拟文件系统、范围请求与目录浏览。
- 可扩展性:模块化设计,核心只做配置管理,HTTP 服务、TLS 等由插件提供;开发者可以编写自己的插件。
- 跨平台性:支持 Linux、Windows、macOS,也可通过 Docker 部署。
- 高效性能:Go 语言实现,内存安全且有较好性能。通过 FrankenPHP 可在不安装 php-fpm(FastCGI)的情况下将 PHP 应用速度提高 4 倍。
Caddyfile 最小结构
Caddyfile 是 Caddy 最常使用的配置文件,默认放在启动目录下,名称固定为 Caddyfile。其基本单元是“站点块”,结构形如:
:8080 {
root * .
file_server
}
这个配置表示监听 8080 端口,把当前目录作为静态文件根目录。使用 caddy run 启动后,访问 http://127.0.0.1:8080/ 即可看到站点内容。若只想临时托管某个目录,不写 Caddyfile 也可以,用 caddy file-server 更直接,下面看在 Windows 下怎么跑。
下载安装与快速示例
官方下载页面:
下载对应操作系统的安装文件并安装;Caddy 也提供 Docker 镜像。
在某个目录下创建一个 index.html:
欢迎使用Caddy!
在该目录执行:
install_path\caddy file-server
file-server 子命令让 Caddy 以静态文件服务器模式运行。把 install_path 换成实际的 Caddy 安装目录后,在浏览器中访问 http://127.0.0.1/ 即可查看页面内容。生产环境里的实际配置,以官方文档为准: