Skip to content

09 · 代理 / 反向代理 / API 网关 ​

前端配置过 vite proxy,后端常听说 Nginx 反向代理、API 网关。三者什么关系、各自解决什么,是前后端协作时最容易各说各话的概念。本篇用一张请求流图讲清。

速览卡 ​

项内容
一句话定位代理层三种形态的分工与配置直觉
核心内容正向/反向代理、网关职责、路径转发、常见配置
读完能回答正向代理和反向代理差在哪?网关到底管什么?
相关板块N04 HTTP | N10 负载均衡 | C05 服务架构

一、一张图分清三个角色 ​

text
客户端 → [正向代理] → 公网       (替客户端转发,如科学上网、抓包)
公网   → [反向代理] → 后端集群     (替服务端接客,如 Nginx)
客户端 → [API 网关] → 多个微服务   (入口的统一治理层)
角色代表谁解决什么
正向代理客户端隐藏客户端、访问受限资源、抓包
反向代理服务端隐藏后端、负载均衡、TLS 终结
API 网关微服务入口鉴权、限流、路由、聚合、灰度

二、正向代理 vs 反向代理 ​

对比正向反向
站在谁那边客户端服务端
客户端知道后端吗不需要(代理替它去)不需要(只认识代理)
典型例子Charles、企业代理Nginx 到应用集群

记忆点:"正/反"以服务对象区分:正向服务客户端,反向服务服务端。


三、反向代理在做什么 ​

text
请求进来 → 匹配路径/域名 → 转发到上游 → 拿响应回传

常见职责:静态资源托管、TLS 终结、路径路由、负载均衡、超时与重试、日志。


四、API 网关 vs 反向代理 ​

能力反向代理API 网关
路由转发✅✅
鉴权/限流/配额弱✅ 强
协议转换弱✅(HTTP↔gRPC、聚合)
灰度/熔断有限✅
适用规模单体/少量服务微服务多团队

心智模型:网关是"带治理能力的反向代理"——不只是转发,还替上游做横切。


五、前后端视角的常见配置 ​

text
# 开发环境(vite)
server.proxy: { '/api': { target: 'http://localhost:8080', rewrite } }

# 生产(Nginx)
location /api/ { proxy_pass http://backend_upstream; }

注意:proxy_pass 有无末尾斜杠会导致路径拼接差异,是高频坑;跨域与 Cookie 也常在代理层配合处理。


六、自检清单 ​

  • [ ] 能用一张图分清正向/反向/网关
  • [ ] 能说出三者的服务对象与典型场景
  • [ ] 知道网关在微服务里管哪些横切职责
  • [ ] 能看懂 Nginx / vite 的路径转发配置
  • [ ] 知道代理层可能引入超时、Cookie、路径坑

七、常见误区 ​

误区事实
"代理就是 Nginx"正向代理(如抓包工具)与反向代理是两回事
"网关只是高级代理"网关还做鉴权、限流、协议转换与治理
"配好代理就解决跨域"还涉及 Cookie、路径、上游超时

八、动手练习 ​

练习 A:配一次反向代理 ​

本地用 Nginx 或 Caddy 把 /api 转发到本地服务,验证路径与响应。

练习 B:看正向代理抓包 ​

用 Charles / Fiddler 开代理,观察 HTTPS 请求被解密的原理(需安装证书)。

练习 C:对比网关配置 ​

读一个网关(Kong / APISIX)的路由 + 限流示例,写出与 Nginx 配置的差异点。


相关文档 ​

本区 ​

其他域 ​