“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

官方文档:

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

非常现代化。


小工具

汉字笔画动画
百度网盘加速
乖猫记账-2026最佳记账App


总结

如果一句话总结:

场景 推荐
新项目 Caddy
小团队 Caddy
Docker 化 Caddy
自动 HTTPS Caddy
超复杂企业系统 Nginx
OpenResty/Lua Nginx

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐