正向代理(Forward Proxy)
代理这个词其实很好理解,在现实生活中,比如A想要买演唱会门票,门票由B来发售,由于某些原因,A无法直接向B买票,这是有一个中间人C也就是黄牛,它可以从B手中买到门票,C可以向A来提供演唱会门票,这个C就是代理。这里需要确定的是:A在向C买门票时,A需要指明他要那个演唱会的门票,这样C才能够购买门票并交付给A。对应到网络中,A相当于我们的客户端,B相当于服务器,C相当于中间的代理服务器,A通过C和B进行通信,A要将B(目标服务器的域名)或者访问地址告诉C,然后C在向B请求,并将响应结果返回给A。这就是正向代理。
反向代理(reverse Proxy)
反向代理其实和正向代理差不多,还是刚才的A、B、C模型,A想要租房,正常情况下,我们租房会怎么做呢?
两种方式
1:A直接向房东租房,此时B作为房东。
2:A找到房屋中介,然后中介提供房屋信息,A找到自己想要的房子。
反向代理就和第二种租房方式相同,A不知道谁正在出租房子,但是他知道房屋中介手中拥有大量房源,他提供一个房子来让A居住。对应到网络中,客户端向代理服务器发送请求,代理服务器来发送请求到目标服务器并将响应结果返回给客户端。这就是反向代理。
乍一看正向代理和反向代理是不是很相似,仿佛没有什么区别?那么我们再看一下他俩之间有什么不同。
首先,正向代理是需要客户端将服务器的地址信息告诉代理服务器的,这时,客户端可以不止访问一个服务,客户端可以访问B、D、F等等服务,都需要代理服务器来转发。而反向代理是:客户端有一个资源需要获取,他只知道代理服务器有,但是代理服务器从哪里获取他就不清楚了。在结合黄牛和租房中介的例子思考一下,正向代理代理的是客户端,反向代理代理的是服务器。正向代理屏蔽了客户端的信息,反向代理屏蔽了服务器的信息。
这样是不是就可以理解什么是正向代理和反向代理了。
最后再说一点,正向代理和反向代理可以来做什么?
正向代理:最常见的是可以用来科学上网(翻墙),无法直接访问网络资源,通过一个代理来间接的访问。
反向代理:反向代理的是服务器,如果我们的应用服务有很多复制体,反向代理可以有选择的将请求分配给服务来处理。这个就是负载均衡,当然了,负载均衡不是这么简单的,我还需要研究学习。
补充一点:(从别处学习到的)
forward :向前的、发送、转交
backward:向后的
reverse:使反转,反面
其实正向代理和反向代理的翻译不太合适,forward的反义词是backward,我认为反向代理的英文想要表达的是将代理对象反转过来。
记录一下自己对正向代理和反向代理的理解,如有不对的地方还望指正!!!