架构师的修炼程序猿阵线联盟-汇总各类技术干货微服务架构和实践

彻底理解正向代理和反向代理

2017-08-13  本文已影响133人  Java技术栈

​平时工作中我们会接触到各种代理,它到底是什么概念呢,又是什么工作原理,下面我们具体来分析一下。

1、概念

正向代理

这个很好理解,比如说你现在要访问一个外国的社交网站www.facebook.com,根据天朝的政策这个网站正常来访问是打不开的,也就是通常所说的被“墙”了,你需要翻越这块围墙才能看到外面的世界,俗称翻墙。你可以通过购买别人的VPN或者自己搭建代理服务器去实现访问这个网站,原理就是通过这个代理服务器去访问你想访问的网站,代理服务器就是客户端和目标服务器之间的跳板,代理服务器接收客户端的请求并发送到目标服务器,同时接收目标服务器的应答结果并返回给客户端,起到一个中介的作用。这就是所谓的正向代理,一般我们通过设置网络连接VPN代理即可。

反向代理

再拿www.facebook这个网站举例,然后如果它指向的IP是10.1.2.33。如果你现在是在美国或者其他能访问这个网站的国家,又或者你现在通过正向代理能访问了这个网站,我们知道这个网站是全球性的社交网站,它肯定不是一台服务器在工作,背后肯定是一堆服务器在支撑这个网站,即使我们访问www.facebook.com这个网站,它也不一定去ip10.1.2.33发送真实请求,它可能会发到其他的ip上面去,这个过程是网站内部的转发的我们看不到。整个过程我们不需要做任何设置,直接访问域名获取数据,这就是反向代理,nginx就是反向代理中间件。

2、区别

下面通过一张图来看清楚正向代理和反向代理的区别

正向代理需要设置代理服务器信息,反向代理不需要任何配置

正向代理指向目标ip地址,而反向代理则不一定。

正向代理是客户端到服务器端的转发代理,反向代理是网站内部负载均衡做的集群请求转发。

正向代理一般用于提供无墙外网访问,反向代理是将防火墙后面的服务器作为服务提供给外面的客户端访问。

正向代理客户端知道是连的代理服务器,反向代理后面的服务器对客户端来说是完全透明的,客户端不知道自己连的具体是哪台服务器。

上一篇下一篇

猜你喜欢

热点阅读