正向代理、反向代理

对于做web的我们来说,应该或多或少都听说过代理、反向代理。今天我们就来聊聊代理、反向代理。

什么是代理

代理,也称为网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。提供代理服务的电脑系统或其它类型的网络终端称为代理服务器(英文:Proxy Server)。

我们打个比方,比如说你要台电视机,这个时候你要么去商场买,要么去狗站或者是猫站上买,当然你也可以直接从电视机生产厂商那边直接购买。在你购买电视机的这个过程中,你,就是所谓的客户端,购买电视机就是向服务端发送请求,而电视机生产厂商就是我们所要请求的目的服务器,在这个过程中商场,狗站,猫站则起到一个代理作用,这个时候我们称之为代理服务器。

具体而言,代理服务器一般可以分为正向代理和反向代理。

正向代理和反向的代理参考图(图片来自于网络)。

什么是正向代理

所谓的正向代理就是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。一般来说正向代理是客户端使用的。在请求过程中,正向代理隐藏了真实请求的客户端。也就是说你通过正向代理向我发送请求,我不知道是你发送的。

同样,我们也来打一个比方,你让你儿子去超市给你买包辣条,然后你儿子跑到超市给你买了包辣条回来了,在买辣条的这个过程中,你儿子就起到一个正向代理的过程,而超市就是你要请求的服务器,你就是客户端,而买辣条这个行为则是你的请求行为。当然假如说超市的售货人员不认识你儿子,更不认识你。所以在整个购买辣条的过程中,超市不知道实际买辣条的人是你,但是超市以为是你儿子买的辣条。这个过程我想就应该比叫容易理解了。

什么是反向代理

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

我们举个例子,比如说你买了新房子,房子需要装修,这个时候你需要地暖,灯饰,沙发等等,你只需要将这些事情交给装修公司,等待最后给你装修出来的结果就行了(这个例子可能有点不是很恰当)。在这个过程中,装修公司所起到的作用就是类似于反向代理,你就是所所谓的请求客户端,而那些家具的供应商,则是这个过程中额真实服务器。

在整个过程中,其实是装修公司和供应商进行暗中勾结,你根本不知道你访问的是哪个服务器,这样就能够保证服务器的安全性。

各自的优缺点以及用途

正向代理是从访问者出发,在访问的过程中隐藏了访问者的真实IP,因此你可通过正向代理来进行隐藏你自己的真实IP。但是这也同样会有一个问题,就是对我们的网警叔叔们造成了很大的困难。

反向代理同正向代理相反,可以隐藏我们真实服务器的一些信息,并且可以在服务端进行一些配置,仅仅允许代理服务器进行代理访问,这样就能够起到一定的防护作用。假如说有黑客黑进了你的服务器(其实是代理服务器)他们也找不到可以修改的东西。

因为在方向代理是存在于服务端的,我们的第每一次请求都是先到达反向代理服务器,再通过反向代理服务器进行资源的分发, 因此,可以在反向代理服务器端进行负载均衡,以及资源的分发。这个其实可以参考CDN的基本实现,CDN的本质上是使用了反向代理的技术的。

另外,在使用反向代理技术的过程中,可以对服务器端的某些不经常变得资源进行适当的缓存,一减少对服务器端的请求,并且极大的减少了服务器端的IO,从而加快了访问速度。

说白了,反向代理的主要用途就两个,一个是提高访问速度,另外一个就是作为防火墙。

原文地址:https://www.cnblogs.com/ShuiNian/p/8481667.html