浅谈正向代理和反向代理

前言

  最近多次听说正向代理和反向代理技术原理,刚好也在学nginx这一实现反向代理的服务器内容,下面就简单地谈一谈我对正向代理和反向代理的理解。

什么是代理?

  说到代理,我们就要明确代理的概念,我认为代理就是一个代表,一个渠道。

  这就涉及到两个角色,被代理对象(服务端),目标对象(客户端)。被代理对象通过代理让目标对象完成一些操作的过程就是代理过程。我们举个简单的例子:种蔬菜的农民为被代理对象,买蔬菜的大妈为目标对象,代理为蔬菜店,大妈通过蔬菜店买到蔬菜的过程就是代理(有种中间商的感觉)

正向代理

  在讲解反向代理之前,我们先来了解下正向代理,正向代理是最为常见的代理模式。

概念

  一个位于客户端和原始服务器之间的代理服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。 

范例

  一、我们在某些情况下需要访问国外的网站,但是由于网络因素,我们在浏览器是无法直接访问到国外的网站的,这时候,我们可能会利用某些工具找到一个可以访问国外网站的代理服务器,我们发送请求到代理服务器,代理服务器带着我们的请求去访问国外网站,并将访问到的数据返回给我们。

  二、A想向C借钱,但是由于某种原因,A无法直接向C借钱,因此,A找来了B,让B代替自己向C借钱,这样A就拿到了C的钱,B在这过程中扮演代理人的角色。

范例解释

  上面所说的两个例子的模式就是正向代理模式,正向代理最大的特点是客户端非常要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息,它代理的是客户端。

  例子1的国外网站服务器无法得知真实客户端(即我们使用的机器)的信息,例子2的C也不知道A的存在。

反向代理

  反向代理模式跟正向代理还是有很大的区别。

概念

    反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。

范例

  一、一个大型的日访问量极大的网站(某宝,某东),由于每天同时访问的人数超过了单个服务器所能够承受的范围,所以这时候新的技术应运而生,就是我们常听说的“分布式部署”。也就是通过部署多台服务器来解决访问人数限制的问题,解决之前单服务器压力过大的问题。我们向网站发送请求,代理服务器将我们的请求进行运算,然后发送到某宝某东的某个服务器上,然后将请求数据结果返回。

 二、A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。 

范例解释

客户端给服务器发送的请求,代理服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,此时代理服务器扮演的就是一个反向代理角色。客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。反向代理,"它代理的是服务端",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

例子1的用户(客户端)并不知道具体是由哪个服务器完成请求操作,例子2中的A的钱是B给的,但是B的钱从何而来,它也不清楚,即A不知道C的存在。

 

二者区别

  

图解:

在正向代理中,Proxy(代理)和Client(客户端)同属于一个LAN(图中方框内),隐藏了客户端信息;

在反向代理中,Proxy(代理)和Server(服务器)同属于一个LAN(图中方框内),隐藏了服务端信息;

实际上,Proxy在两种代理中做的事情都是替服务器代为收发请求和响应,不过从结构上看正好左右互换了一下,所以把后出现的那种代理方式称为反向代理了。

 

正向代理的作用

    1. 访问原来无法直接访问的资源,通过代理访问 
    2. 作为中转站,用作缓存,加速访问速度 
    3. 对客户端访问授权,上网进行认证 
    4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

反向代理的作用

    1. 可以采集策略,分配到指定的服务器,保护内网安全 
    2. 负载均衡,能够使各服务器间的压力分担出去 
    3. 作为中转站,缓存,减少服务器的压力 

猜你喜欢

转载自blog.csdn.net/zengwende/article/details/86615599