1. 什么是正向代理?
正向代理是客户端的代理,帮助客户端访问外部资源,隐藏客户端的真实 IP。
它的工作流程如下:
- 客户端本来直接访问目标服务器,但无法(或不想)直接连接。
- 客户端把请求发给正向代理服务器。
- 正向代理服务器替客户端转发请求到目标服务器,并将返回的结果交给客户端。
正向代理的用途:
- 突破网络限制:比如访问被限制的网站。
- 匿名访问:隐藏客户端的真实 IP。
- 缓存加速:通过代理缓存减少重复请求。
示例场景:
- 使用 VPN 或 HTTP 代理访问一个被防火墙阻止的网站。
2. 什么是反向代理?
反向代理是服务器端的代理,帮助服务器处理客户端请求,隐藏服务器的真实 IP 和端口。
它的工作流程如下:
- 客户端以为自己直接在和目标服务器通信。
- 实际上,客户端的请求先到达反向代理服务器。
- 反向代理服务器将请求转发到后端的实际服务器,获取数据后再返回给客户端。
反向代理的用途:
- 隐藏后端服务器信息:客户端只看到代理服务器的地址,增强安全性。
- 负载均衡:将请求分发到多个后端服务器。
- SSL 终端:在反向代理处处理 HTTPS,加密传输,提高性能。
- 缓存加速:代理服务器缓存常用资源,减少后端负载。
示例场景:
- 客户端通过
https://www.example.com
访问网站,但实际请求被反向代理转发到后端的多台服务器(如http://192.168.1.2:8080
、http://192.168.1.3:8080
等)。
3. 为什么叫“反向”代理?
代理方向的区别:
- 正向代理:
- 客户端知道目标服务器,但通过代理服务器访问目标。
- 代理服务器为客户端服务。
- 反向代理:
- 客户端不知道后端服务器,只知道代理服务器。
- 代理服务器为服务器服务。
形象理解:
- 正向代理:客户端的“代理”,站在客户端的“前面”。
- 反向代理:服务端的“代理”,站在服务器的“前面”。
请求路径上的区别:
- 正向代理:
客户端 → 代理服务器 → 目标服务器 → 代理服务器 → 客户端
(代理服务器隐藏了客户端与目标服务器的直接交互) - 反向代理:
客户端 → 反向代理服务器 → 后端服务器 → 反向代理服务器 → 客户端
(反向代理隐藏了后端服务器)
4. 常见的反向代理工具
- Nginx:轻量级高性能代理。
- Apache HTTP Server:广泛使用的 Web 和代理服务器。
- HAProxy:专为负载均衡设计的反向代理。
- Traefik:专注于云原生和微服务环境的动态反向代理。
总结
反向代理之所以叫“反向”,是因为它隐藏了后端服务器,将所有请求都集中在代理服务器上,方向上“反向”于正向代理。
它的核心功能是为服务器端提供保护、负载均衡、缓存和 SSL 支持,同时简化客户端与后端之间的交互。