双后端拓扑
/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 /tracks | TrackController |
/api/auth/login | :8080 /auth/login | Sa-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。