1.正向代理
1.1 概念
正向代理是一个位于客户端和目标服务器之间的[代理服务器](中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端。正向代理的情况下,客户端必须要进行一些特殊的设置才能使用。
1.2 特点
- 正向代理需要主动设置代理服务器 ip 或者域名进行访问,由设置的服务器 ip 或者域名去访问内容并返回
- 正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见。
1.3 使用场景
正向代理的典型用途是为防火墙内的局域网客户端提供访问服务器的途径,正向代理还可以使用缓冲特性减少网络利用率。
- 访问国外网站
有时候,用户想要访问某国外网站,该网站无法在国内直接访问,但是我们可以访问到一个代理服务器,这个代理服务器可以访问到这个国外网站。这样呢,用户对该国外网站的访问就需要通过代理服务器来转发请求,并且该代理服务器也会将请求的响应再返回给用户。这个上网的过程就是用到了正向代理。
1.4 用途
- 突破访问显示:通过代理服务器,可以突破自身 ip 访问限制,访问国外网站等
- 提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,会将部分请求的响应保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度
- 隐藏客户端真实 ip:上网者可以通过正向代理的方法隐藏自己的 ip,免受攻击
2. 反向代理
2.1 概念
反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。
对于客户端来说,反向代理就相当于目标服务器,只需要将反向代理当作目标服务器一样发送请求就可以了,并且客户端不需要进行任何设置。
2.2 特点
- 正向代理需要配置代理服务器,而反向代理不需要做任何设置。
- 反向代理是代理服务器,为服务器收发请求,使真实服务器对客户端不可见。
2.3 使用场景
反向代理的典型用途是将防火墙外的服务器提供给客户端访问,反向代理还可以为后端的多台服务器提供负载均衡,或者为后端较慢的服务器提供缓冲服务。
2.4 用途
- 隐藏服务器真实 ip:使用反向代理,可以对客户端隐藏服务器的 ip 地址
- 负载均衡:反向代理服务器可以做负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上
- 提高访问速度:反向代理服务器可以对静态内容及短时间内有大量访问请求的动态内容提供缓存服务,提高访问速度
- 提供安全保障:反向代理服务器可以作为应用层防火墙,为网站提供对基于 web 的攻击行为(例如 DoS/DDoS)的防护,更容易排查恶意软件等。还可以为后端服务器统一提供加密和 SSL 加速(如 SSL 终端代理),提供 HTTP 访问认证等。
- 正向代理和反向代理的异同
3.1 相同点
正向代理和反向代理所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端。
3.2 不同点
- 正向代理是客户端的代理,服务器不知道真正的客户端是谁;反向代理是服务器的代理,客户端不知道真正的服务器是谁
- 正向代理一般是客户端架设的;反向代理一般是服务器架设的
- 正向代理主要是用来解决访问限制问题;反向代理则是提供负载均衡、安全防护等作用。二者都能提高访问速度
- 通过故事理解正向代理和反向代理
4.1 正向代理
同学 A 急需一笔钱,他直接向富豪马云借钱,但是他俩之间毫无关系,结果当然是没有借到。经过一番打听,同学 A 的老师王先生是马云的好朋友,于是 A 同学请求王老师,让王老师帮忙向马云借钱,最终马云同意借钱给王老师,王老师把这笔钱转交给了 A 同学。
上文就相当于一个正向代理的过程,A 同学为客户端,马云为服务器,王老师为正向代理。A 同学请求王老师向马云借钱,这个过程中 A 同学隐藏了自己的角色,马云事实上是不知道到底是谁借的钱。相当于服务器不知道真正发起请求的客户端是谁。
4.2 反向代理
如果遇到困难需要拨打 10086 客服电话,可能一个地区的 10086 客服有几十个,但是我们不需要关心电话那头的人是谁。只需要拨通 10086 的总机号码,电话那头总有客服会回应。
这里的 10086 总机号码就相当于反向代理,客户端不知道真正提供服务的人是谁。