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综合练习

反向代理

reverse_proxy、header 转发。

35 分钟

反向代理基础

reverse_proxy 是 Caddy 转发请求到 upstream 的核心指令。对照 ngx-proxy 的 proxy_pass,Caddy 默认设置较完整的转发头,配置更短。

学习目标

  • 正确使用 reverse_proxy 与 URI 前缀处理
  • 传递 Host、客户端 IP 与 X-Forwarded-*
  • 支持 WebSocket / Next.js HMR 的 Upgrade

核心内容

基本反代

www.coderoadmap.cn {
    handle /api/* {
        uri strip_prefix /api
        reverse_proxy 127.0.0.1:8080
    }
    handle {
        reverse_proxy 127.0.0.1:3000
    }
}
  • uri strip_prefix /api:去掉 /api 再转发,等价 Nginx location /api/ + proxy_pass http://backend/
  • 无 strip 时 URI 原样转发,类似 proxy_pass 末尾无 /

转发头(默认行为)

Caddy 自动设置:

Host              → 原 Host
X-Forwarded-For   → 客户端链
X-Forwarded-Proto → https
X-Real-IP         → 客户端 IP

Spring Boot 需信任 X-Forwarded-* 才能生成正确 URL 与 Sa-Token cookie(sb-security)。如需覆盖:

reverse_proxy 127.0.0.1:8080 {
    header_up Host {host}
    header_up X-Forwarded-Proto {scheme}
}

WebSocket / HMR

handle {
    reverse_proxy 127.0.0.1:3000 {
        header_up Connection {>Connection}
        header_up Upgrade {>Upgrade}
    }
}

Caddy 2 对 Upgrade 多数场景已自动处理;经 Caddy 反代 npm run dev 时若 HMR 失败,检查此项。

超时与 body 大小

reverse_proxy 127.0.0.1:8080 {
    transport http {
        read_timeout 60s
        write_timeout 60s
    }
}

request_body {
    max_size 20MB
}

与 Nginx client_max_body_size 20m 及 Spring multipart 限制对齐。

练习

  • 用 curl 经 Caddy 访问 /api/tracks,对比直连 :8080 路径
  • 解释 strip_prefix /api 与 Nginx proxy_pass 末尾 的对应关系
/
  • 在 Docker 网络中改为 reverse_proxy backend:8080(docker-network)
  • 小结

    reverse_proxy + strip_prefix = Nginx proxy_pass 语义;转发头默认较全。 下一课双后端拓扑。

    加载本节练习…
    ← 上一课自动 HTTPS下一课 →双后端拓扑