网络代理
什么是代理,网络代理,代理服务器
代理(proxy)很容易理解就是代表处理,在生活中,有些事情就不是本人去完成,找一个人代你去完成,它是你代理人。把你的权利交给你的代理人,一般在这种在法律上比较常见,但是在计算机的世界里还好,经常会出现这种代理的现象,比如就有个设计模式叫代理模式。
在网络上发出请求是客户端,接收请求的是服务器端。请求从客户端到服务器端会通过好多网络。然后到达服务器端,这个时候一般中间会有好多服务器帮你 转发请求,不是客户端直接去链接服务器端,他们就是代理服务器。而网络代理就是帮你转发的请求的过程,那些帮你转发的服务器就是代理服务器。它的工作主要在开放系统互联(OSI)模型的对话层。我上面所描述的代理也就是正向代理。
正向代理
正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。
举个栗子:
我是一个用户,我访问不了某网站(facebook)由于GFW(Great Fire Wall),但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站(facebook)。也就是可以在代理上做一些手脚,有人把代理机叫做跳板机。
优点:
1.突破自身IP访问限制:访问国外站点。教育网、169网等网络用户可以通过代理访问国外网站;或者访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源 的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。
2、提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。
3、隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击
4、对客户端访问授权,上网进行认证。(它可以记录你的访问信息和访问记录,从某个角度说GFW也可以说是一个代理,不过他的代理是只能代理部分网站,不是所有的都能去访问。他通过IP黑名单或者DNS污染禁止你去访问一些网站)。
一般网络根据协议去代理,比如说socke代理,http代理,htts代理,vpn代理等。
反向代理
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器(一般也要和DNS服务器配合),并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。一般反向代理需要配置的是服务端(所以一般程序员使用的比较多)
举个栗子:
在拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。
优点:
1、保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击,如Dos,DDos。大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。(WAF(Web Application Firewall)网站应用级入侵防御系统。Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。)
2、负载均衡,通过反向代理服务器来优化网站的负载。若服务器簇中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援。
3、对一些内容进行压缩,以节约带宽或为网络带宽不佳的网络提供服务;还可以缓存静态内容,当静态内容发生变化时,通过内部通知机制通知反向代理服务器缓存失效,需重新加载。(也就是所谓的CDN (Content Delivery Network )内容分发网络)
4、提供HTTP访问认证。统一提供加密和SSL加速(如SSL终端代理)。
一般反向代理都是通过服务器去分发请求,这种服务器有Nginx、Tengine、HAProxy、Apache HTTP Server。
正向代理与反向代理的区别
正向代理中,proxy和client同属一个LAN,对server透明;
反向代理中,proxy和server同属一个LAN,对client透明。
实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理。
总结
正向代理通过代理服务器隐藏客户端,反向代理是通过代理服务器隐藏服务端。