CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Caddy 反向代理入门/课时/双后端拓扑
RawBlame
课时目录12 节

Caddy 反向代理入门

  1. 01Caddy 是什么
  2. 02安装与运行
  3. 03Caddyfile 语法
  4. 04自动 HTTPS
  5. 05反向代理
  6. 06双后端拓扑
  7. 07静态文件
  8. 08Docker 运行 Caddy
  9. 09Caddy vs Nginx
  10. 10K8s Ingress 对照
  11. 11排障
  12. 12综合练习

双后端拓扑

/api → :8080、/ → :3000 对照 prod.conf。

30 分钟

双后端拓扑

CodeRoadMap 生产 Nginx 采用 双 upstream:REST API 进 Spring Boot :8080,页面与 RSC 进 Next.js platform :3000。本课用 Caddyfile 复现同等路由,对照 deploy/nginx/prod.conf.example。

学习目标

  • 读懂 /api/* 与根路径的分工
  • 用 Caddyfile 实现与 Nginx 等价的双后端
  • 对照本地开发与 Docker 网络中的服务名

核心内容

生产拓扑

https://www.coderoadmap.cn
         │
    ┌────┴────┐
    │  Caddy  │  (生产实际为 Nginx)
    └────┬────┘
         │
    /api/* ──► 127.0.0.1:8080  (strip /api)
    /      ──► 127.0.0.1:3000

对照 prod.conf.example

www.coderoadmap.cn {
    encode gzip

    handle /api/* {
        uri strip_prefix /api
        reverse_proxy 127.0.0.1:8080
    }

    handle {
        reverse_proxy 127.0.0.1:3000
    }
}

coderoadmap.cn {
    redir https://www.coderoadmap.cn{uri} permanent
}

Nginx 版见 ngx-api:upstream coderoadmap_backend / coderoadmap_platform 在此合并为两个 handle。

请求示例

浏览器 URL到达 upstream处理方
/tracks/java-fundamentals:3000 /tracks/...Next RSC + fetch API
/api/tracks:8080 /tracksTrackController
/api/auth/login:8080 /auth/loginSa-Token

Next 的 platform/src/lib/api.ts 以 /api 为前缀;浏览器同源,无 CORS 麻烦。

Docker Compose 变体

handle /api/* {
    uri strip_prefix /api
    reverse_proxy backend:8080
}
handle {
    reverse_proxy platform:3000
}

服务名替代 127.0.0.1(docker-network)。DNS 仍由 dns-essentials 解析到宿主机或负载均衡 IP。

练习

  • 追踪 GET /tracks/redis-essentials 从 Caddy 到 MySQL 的完整链路
  • 将 upstream 改为 Docker 服务名并 caddy validate
  • 说明若去掉 /api/* handle,Next 与 Java 谁会 404

小结

双 handle 是 CodeRoadMap 核心:API 8080,页面 3000;Caddy 版对照 prod.conf.example。 下一课静态文件。

加载本节练习…
← 上一课反向代理下一课 →静态文件