正向代理(Forward Proxy)
先看例子
你是一个学生,想要访问学校图书馆的某个资源,但图书馆规定只有管理员才能访问。
于是你去找图书馆的管理员,让他代替你去图书馆获取资源。
图书馆只知道是管理员来访问,不知道背后是你在请求。
这个过程中,你 通过 管理员 完成了对 图书馆 的访问,这就是一个正向代理了。
- 你(客户端程序)
- 管理员(正向代理)
- 图书馆(目标服务器)
定义
正向代理是客户端(如学生)和目标服务器(如图书馆)之间的中间人,负责代理客户端的请求,隐藏客户端的身份。
客户端则通过正向代理去访问目标服务器,目标服务器不知道真实的客户端是谁,只知道代理的存在。
技术特征
客户端显式指定代理服务器(如浏览器设置代理IP)
突破客户端访问限制(地理位置、防火墙策略)
保护客户端身份隐私(服务端仅见代理IP)
反向代理(Reverse Proxy)
先看例子
你是一个学生,想要访问学校图书馆的某个资源,但图书馆有很多分馆,你不知道具体是哪个分馆提供这个资源。
于是你去找图书馆的管理员,管理员根据你的请求,将你引导到正确的分馆。
你只知道管理员的存在,不知道具体是哪个分馆会处理你的请求。
这个过程中,你 通过 管理员 找到了正确 分馆,这就是一个反向代理了。
- 你(客户端程序)
- 管理员(反向代理)
- 分馆(目标服务器)
定义
反向代理是目标服务器(如图书馆)和客户端(如学生)之间的中间人。负责代表服务端接收客户端的请求。
客户端通过反向代理访问目标服务器,客户端不知道真实的目标服务器是谁,只知道反向代理的存在。
技术特征
客户端无感知(直接访问代理地址)
实现负载均衡、服务路由等能力
保护服务端拓扑安全
对比一下
对比维度 | 正向代理 | 反向代理 |
代理关系 | 代表客户端 | 代表服务端 |
配置主体 | 客户端主动设置 | 服务端强制生效 |
主要技术价值 | 访问控制/身份隐藏 | 负载均衡/服务治理 |
应用案例 | 企业内网审计代理 | Spring Cloud Gateway、Nginx |
实际应用场景(Nginx)
正向代理
- 开发者通过 Nginx 正向代理调试 API,隐藏自己的 IP。
- 通过正向代理访问外部网站(也就是科学上网啦)。
反向代理
- 服务端通过 Nginx 反向代理将请求分发到多个后端服务器,实现负载均衡。
- 通过 Nginx 反向代理隐藏后端服务器的真实 IP,提高安全性。