用 Caddy 替代 Nginx:下一代 Web Server 的生产实践指南
“Nginx 很强,但越来越多人开始把生产环境切到 Caddy。”
过去十几年,Nginx 几乎是 Web Server、反向代理、静态资源服务器的标准答案。
但随着 HTTPS 普及、容器化部署、自动化运维和微服务的发展,Nginx 的一些“老派设计”开始暴露问题:
- HTTPS 配置复杂
- 证书续期依赖额外工具
- 配置语法不直观
- 热更新容易踩坑
- Docker 场景配置繁琐
而这时候,一个新选手开始崛起:
Caddy
它被很多开发者称为:
“现代化版 Nginx”
为什么越来越多人开始用 Caddy?
一句话总结:
Caddy 默认就做对了很多事。
它不像传统 Web Server:
- 默认 HTTP
- 手动配 HTTPS
- 自己处理证书
- 自己写 TLS 配置
- 自己做跳转
- 自己搞续期
而 Caddy:
- 默认 HTTPS
- 自动申请 SSL
- 自动续期
- 自动 HTTP → HTTPS
- 配置极简
- 热更新无感知
你甚至只需要:
example.com {
reverse_proxy localhost:8080
}
就已经:
- 自动启用 HTTPS
- 自动申请 Let’s Encrypt
- 自动续期
- 自动反代
这在 Nginx 里,通常需要几十行配置。
Nginx 的痛点
先看看传统 Nginx 配置:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
接下来你还得:
- 配 HTTPS
- 配 certbot
- 配定时续期
- 配 TLS 参数
- 配 HTTP 跳转
- reload nginx
真正生产环境往往会变成:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate ...
ssl_certificate_key ...
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ...
location / {
proxy_pass ...
}
}
配置越来越长。
尤其:
- 新手容易踩坑
- HTTPS 易配置错误
- TLS 安全性依赖经验
- Docker 下证书管理麻烦
Caddy 的核心优势
1. 自动 HTTPS(真正的杀手级功能)
这是 Caddy 最大的核心竞争力。
只要域名解析正确:
example.com {
reverse_proxy localhost:8080
}
启动后:
- 自动申请证书
- 自动配置 TLS
- 自动续期
- 自动 OCSP Stapling
- 自动 HTTPS 跳转
你甚至不需要知道:
- certbot
- acme.sh
- Let’s Encrypt API
对个人开发者、小团队来说:
这几乎直接减少了 80% 运维成本。
2. 配置极其简单
Nginx:
location /api/ {
proxy_pass http://127.0.0.1:9000;
}
Caddy:
handle /api/* {
reverse_proxy localhost:9000
}
更加接近自然语言。
3. 热更新更优雅
Nginx:
nginx -s reload
如果配置错误:
- reload 失败
- 服务异常
- 有时连接中断
而 Caddy:
caddy reload
具备:
- 配置校验
- 平滑热更新
- 零停机 reload
对高并发系统非常友好。
4. 原生支持 HTTP/3
现在很多人还在手动给 Nginx 编译 QUIC 模块。
但 Caddy:
默认支持 HTTP/3。
这是现代协议栈的重要优势。
5. Docker 场景极度舒服
Nginx Docker 常见问题:
- 证书目录挂载
- certbot 容器
- 自动续期
- reload 联动
而 Caddy:
services:
caddy:
image: caddy
ports:
- 80:80
- 443:443
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
结束。
证书自动存储。
不用再维护 certbot。
实战:从 Nginx 迁移到 Caddy
一、安装 Caddy
Linux:
curl -1sLf \
'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor \
-o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf \
'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
官方文档:
二、最简单反向代理
原 Nginx:
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
改成 Caddy:
api.example.com {
reverse_proxy localhost:8080
}
就结束了。
三、静态网站托管
example.com {
root * /var/www/html
file_server
}
支持:
- gzip
- range
- cache
- https
默认就很好。
四、SPA 前端(Vue/React)
以前 Nginx:
try_files $uri /index.html;
Caddy:
example.com {
root * /app/dist
try_files {path} /index.html
file_server
}
非常直观。
五、WebSocket
Nginx:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
Caddy:
根本不用写。
自动支持。
六、多服务网关
example.com {
handle /api/* {
reverse_proxy localhost:8080
}
handle /admin/* {
reverse_proxy localhost:9000
}
handle {
root * /web
file_server
}
}
这已经很像 API Gateway 了。
七、Basic Auth
admin.example.com {
basicauth {
admin $2a$14$xxxxxxxx
}
reverse_proxy localhost:8080
}
生成密码:
caddy hash-password
八、自动 HTTPS 的原理
Caddy 内部实现了:
Let’s Encrypt
ACME 协议客户端。
流程:
域名解析
↓
ACME 验证
↓
自动签发证书
↓
自动安装
↓
自动续期
整个过程完全自动化。
Caddy 的不足
当然,Caddy 也不是完美的。
1. 生态不如 Nginx
Nginx 十几年积累:
- Lua
- OpenResty
- 大量模块
- 社区教程
Caddy 生态仍小很多。
2. 高级场景资料较少
比如:
- 四层代理
- 高级限流
- WAF
- Lua 动态逻辑
Nginx 资料压倒性更多。
3. 企业老系统迁移成本
很多公司:
- 运维 SOP 基于 Nginx
- 日志分析基于 Nginx
- 监控基于 Nginx
- 配置模板基于 Nginx
迁移需要成本。
性能对比
很多人误以为:
“Go 写的 Web Server 会比 C 差。”
实际上:
Caddy 性能非常强。
在多数业务场景:
- CPU 差距很小
- TLS 性能甚至更强
- HTTP/2 / HTTP/3 表现优秀
真正瓶颈通常不在 Web Server。
而在:
- 数据库
- 业务逻辑
- IO
- 缓存
哪些场景特别适合 Caddy?
个人开发者
最推荐。
因为:
- 不懂 HTTPS 也能安全上线
- 不需要运维经验
- 配置简单
Docker / K8S
非常舒服。
尤其:
- 自动证书
- 自动 reload
- 容器友好
微服务网关
Caddy 做:
- API Gateway
- Reverse Proxy
- Internal Gateway
体验很好。
SaaS 系统
尤其:
- 多租户域名
- 自动 HTTPS
- 动态站点
Caddy 非常强。
哪些场景仍建议 Nginx?
超复杂企业架构
例如:
- Lua 动态逻辑
- OpenResty
- WAF 深度定制
- 复杂流量治理
Nginx 仍更成熟。
极端性能优化
某些:
- CDN
- 超高并发边缘节点
仍可能优先 Nginx。
一个很现实的问题
很多人用了 Caddy 后最大的感受是:
“终于不用折腾 HTTPS 了。”
以前:
- 证书过期
- certbot 崩了
- reload 出问题
- TLS 配错
都很常见。
现在:
Caddy 默认帮你搞定。
这其实是它真正改变行业的地方:
Web Server 开始“默认安全”。
推荐架构
个人/中小团队非常推荐:
Internet
↓
Caddy
↓
FastAPI / Node.js / Go
或者:
Cloudflare
↓
Caddy
↓
Docker Services
非常现代化。
小工具
总结
如果一句话总结:
| 场景 | 推荐 |
|---|---|
| 新项目 | Caddy |
| 小团队 | Caddy |
| Docker 化 | Caddy |
| 自动 HTTPS | Caddy |
| 超复杂企业系统 | Nginx |
| OpenResty/Lua | Nginx |
更多推荐


所有评论(0)