惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
G
Google Developers Blog
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
P
Proofpoint News Feed
V
Visual Studio Blog
爱范儿
爱范儿
The Cloudflare Blog
博客园 - 叶小钗
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
M
MIT News - Artificial intelligence
Microsoft Security Blog
Microsoft Security Blog
博客园 - 聂微东
H
Help Net Security
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
量子位
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

串串狗小刊 ⭐️

Web 出海之域名商、托管商等一定要分开 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 程序员下班以后做什么副业合适? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 终极拷问:用户的登录信息放哪里? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 5个 link 标签,突破前端性能瓶颈! - 串串狗小刊 Web 出海让你结束上班时代! - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 注意!程序员不要使用 设计模式 了! - 串串狗小刊 Web 出海之品牌站如何应对被别人侵权 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Web 出海之一些广告流量主方案和 SaaS 站没必要搞社区 - 串串狗小刊 年轻人怎么抓住 AI 发展的风口? - 串串狗小刊 为什么 GO 语言地位很尴尬? - 串串狗小刊 Web 出海必备的外链列表 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 我的 Web 3D 世界梦 - 串串狗小刊 OPC Web 出海之图视频的 AI 供应商渠道和简单外链 - 串串狗小刊 简单聊聊我的 Nodejs 世界观 - 串串狗小刊 Web 出海快速判断关键词法和推荐 3 个 SKILL - 串串狗小刊 Web 出海之演示建站盈利和朋友 Reyn 的教训 阅读源代码前要运行的 5 条 Git 命令 - 串串狗小刊 介绍几组我一直在使用的 Codex 插件 我观看哥飞年终会议复盘的 Web 出海笔记(下) - 串串狗小刊 观看哥飞年终会议复盘的 8 个 Web 出海笔记 - 串串狗小刊 Codex 敞开用的技巧和谷歌趋势的参考词 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Web 出海之外链提交频率和如何不花 Token 处理代码 - 串串狗小刊 程序员现在的最佳副业 ~ Web 出海 - 串串狗小刊 如何设计良好的 API - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 你跟 AI 对话后会发生什么? - 串串狗小刊 出海 Web 之 GSC 里的曝光量和点击量和外链的关系 - 串串狗小刊 出海 Web 不要 恋战 新词游戏站 - 串串狗小刊 无港卡开通 Stripe 收款和 Nofollow 转 Dofollow 技巧 - 串串狗小刊 DeepSeek 发布氮气加速器 DSpark!可惜好东西又开源了 - 串串狗小刊 简单聊聊出海 Web 的游戏站 - 串串狗小刊
三大反向代理 Nginx、Traefik、Caddy 的区别是什么? - 串串...
独元殇 · 2026-04-22 · via 串串狗小刊 ⭐️

我想起来我之前,有记过一个三个主流代理软件在选择上的笔记,顺便整理一下分享分享:

主流的三个反向代理软件

现在主流的成熟的反向代理软件,有三个:Traefik、Nginx、Caddy 。

(注意,Apache 它本质是一个 web 服务器,它已经没落,而且不是专门搞反向代理的)

其中,nginx 是最流行的。但是这三种,每种都有它适合的地方。

在我印象中大体来讲,nginx 用的最多。

微服务方面,Traefik 更有优势。

简洁优雅方面,caddy 最简单(尤其是配置,最简单,而且自带 Let's Encrypt 和 ZeroSSL ,搞 SSL 证书很省劲!)。

我来给大家讲一下什么场景、以及它们都有什么区别。

区别

它们三种,在成分上,有以下几个区别:

img

可以看到 nginx 这个老牌反代理工具,在 内存占用方面非常优秀。因此,这也是为什么 Nginx 用的最广泛了。

配置文件复杂度

配置方面,最复杂的就是 Nginx ,这个不再多说,看着就头疼。

而 Traefik 的配置长这个样子,是 YAML 格式的,维护起来还算可以:

services:
  traefik:
    image: traefik:v3.1
    command:
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencrypt.acme.email=you@example.com"
      - "--certificatesresolvers.letsencrypt.acme.storage=/acme/acme.json"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
    ports: ["80:80", "443:443"]
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./acme:/acme

  api:
    image: my-api:latest
    labels:
      - "traefik.http.routers.api.rule=Host(`api.example.com`)"
      - "traefik.http.routers.api.tls.certresolver=letsencrypt"
      - "traefik.http.services.api.loadbalancer.server.port=3000"

  frontend:
    image: my-frontend:latest
    labels:
      - "traefik.http.routers.frontend.rule=Host(`app.example.com`)"
      - "traefik.http.routers.frontend.tls.certresolver=letsencrypt"
      - "traefik.http.services.frontend.loadbalancer.server.port=8080"

但是,最简单的是 caddy ,配置是使用 JSON 格式(或称为 Caddyfile)来声明:

api.example.com {
    reverse_proxy localhost:3000
}

app.example.com {
    reverse_proxy localhost:8080
}

证书 TLS 和配置方面

对于配置 SSL (TLS)方面,最友好的是 caddy ,一切自动搞定,而且还能自动续费,而 Traefik 和 Nginx 都需要单独配置。而且 Nginx 还得搞个 ACME 客户端,这个最麻烦。

而对于配置。

Nginx 默认是静态配置,你修改了配置文件,得重载(nginx -s reload)才能启动。不过,使用 nginx-proxy 是可以实现动态配置的。

caddy 是动态配置的,它有 API 接口,你修改后它实时就切换了。

traefik 也支持动态配置。而且是三者中最成熟的那个。

性能

使用 100 个 WRK 测试 HTTP 代理,在同一机器下,每秒的最大并发数:

img

可以看到老牌的 Nginx 还是胜出了。不过,这种测试一般意义不大,因为我们的瓶颈主要都在数据库等其他方面。

哦,其实,数据库也不是瓶颈,最大的瓶颈是 网络 。

中间件的实现和生态

也就是一些更详细的功能实现。

比如 身份验证、安全过滤/防火墙、数据头部、限流、CORS、压缩等等。

这边举一个频率限制的例子。看看这三个都是怎么实现的。

# Nginx
http {
    limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
    server {
        location /api/ {
            limit_req zone=api burst=20 nodelay;
            proxy_pass http://backend;
        }
    }
}

# Traefik
#(这个 Traefik 引入了中间件链的概念,能反复复用,对于复杂配置很友好)
labels:
  - "traefik.http.middlewares.ratelimit.ratelimit.average=10"
  - "traefik.http.middlewares.ratelimit.ratelimit.burst=20"
  - "traefik.http.routers.api.middlewares=ratelimit"

# Caddy(需要安装第三方插件)
api.example.com {
    rate_limit {remote.ip} 10r/s
    reverse_proxy localhost:3000
}

配置复杂度依次递减啊....

在生态方面,Nginx 的第三方生态最好了。当然,一般大部分功能,软件里面都写全够用了。

总结一下

Nginx 还是最稳妥的默认选项,但是配置复杂麻烦。如果你的服务千年不动一次,而且硬件差,就要 Nginx 。

如果你用的 K8S ,或者配置相对复杂,比如 微服务 动不动需要扩容,那就使用 Traefik 。

如果你懒得搞那么多,就用最简单的 Caddy

参考资料:

https://www.reddit.com/r/selfhosted/comments/uw50ua/caddydockerproxy_vs_traefik_vs_nginxproxymanager/

https://www.programonaut.com/reverse-proxies-compared-traefik-vs-caddy-vs-nginx-docker/

https://dev.to/instadevops/nginx-vs-traefik-vs-caddy-which-reverse-proxy-should-you-pick-3ekl