其实“正向”和“反向”的关键在于代理的对象不同,以及谁主动发起代理需求。
1.正向代理定义
正向代理是客户端使用的代理服务器,它代表客户端向外部服务器发送请求。 核心作用:隐藏客户端的真实身份,或帮助客户端访问受限制的资源。
通俗例子
假设你(客户端)在办公室无法访问某个网站(如YouTube),于是你通过一台能访问外网的代理服务器(正向代理)请求数据:
- 你告诉代理服务器:“帮我去YouTube下载这个视频”。
- 代理服务器代替你访问YouTube,拿到视频后返回给你。
- YouTube只知道代理服务器的IP,而不知道你的真实IP。
应用场景
- 突破网络限制:访问被公司/地区封锁的网站(如使用VPN)。
- 匿名上网:隐藏客户端的真实IP地址(如Tor浏览器)。
- 缓存加速:企业内网缓存常用资源(如员工下载重复文件时直接走代理缓存)
技术配置
客户端需主动设置代理服务器的地址(如浏览器或系统设置中配置):
浏览器 → 正向代理 → 目标网站
2.反向代理
定义:反向代理是服务器端使用的代理服务器,它代表服务器接收客户端的请求,并将请求转发给内部的实际服务器。 核心作用:隐藏服务器架构,提升安全性、负载均衡或缓存静态内容。
通俗例子
假设用户(客户端)访问淘宝网,但淘宝背后有成千上万的服务器:
- 用户访问的是淘宝的反向代理(如Nginx)。
- 反向代理根据负载均衡策略,将请求转发给某台具体的服务器(如处理登录的服务器A、处理商品的服务器B)。
- 用户始终认为自己在和“淘宝的入口”通信,而不知道背后有多少台服务器。
应用场景
- 负载均衡:将流量均匀分配给多台服务器(如应对双11高并发)。
- 安全防护:隐藏真实服务器IP,防御DDoS攻击。
- SSL加密:统一在反向代理上配置HTTPS证书(如Nginx处理SSL,后端用HTTP)。
- 缓存静态资源:加速图片、CSS等文件的访问(如CDN)。
技术配置
客户端无需任何设置,反向代理由服务器端部署:
浏览器 → 反向代理 → 内部服务器(用户不可见)
1. 核心区别:代理对象不同
-
正向代理是“替客户端干活” 你(客户端)想访问一个网站(服务器),但直接访问不了(比如被网络限制)。于是你找代购(正向代理)帮你买,代购代替你联系商家,商家只知道代购的存在,不知道你的存在。 例子:VPN翻墙访问谷歌,浏览器设置代理插件。
-
反向代理是“替服务器干活” 你去超市(反向代理)买商品,超市背后有多个供货商(真实服务器),但你不关心商品来自哪个仓库。超市负责挑选库存充足、距离最近的供货商发货,你只和超市打交道。 例子:访问淘宝时,Nginx反向代理将请求分发到不同服务器。
总结:
-
简而言之:客户端想访问谷歌但是访问不了,客户端找了个代理服务器替我访问该网页【带有目的性】---正向代理
-
客户端使用一个网站需要登录,代理服务器接收登录请求后去找到对应负责登录的服务器去处理这件事---反向代理
-
以上两个例子看出动作的两个对象不同,一个是客户端做的事情,一个是代理服务器做的事情