javascript代码实例教程-NodeJS的正向代理、反向代理、透明代理详解

发布时间:2018-12-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-NodeJS的正向代理、反向代理、透明代理详解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

引 言:Nginx作为时下最流行的HTTP服务器之一,同时它是一个反向代理服务器,提到反向代理服务器,有同学可能觉得这个概念很模糊,如果说到代理,他可能明白,但是再引出一个正向代理,估计懵了…

代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术。常用的代理技术分为正向代理、反向代理和透明代理。

一、正向代理(Forward Proxy)

一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,知名的科学上网工具shadowsocks 扮演的就是典型的正向代理角色。

NodeJS的正向代理、反向代理、透明代理详解

使用正向代理服务器作用主要有以下几点:

1)访问本无法访问的服务器B

他的工作原理就像一个跳板。举个例子,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。

现实中的例子就是“翻墙”。不过自从VPN技术被广泛应用外,“翻墙”不但使用了传统的正向代理技术,有的还使用了VPN技术。

2)加速访问服务器B

早期的正向代理中,很多人使用正向代理就是提速。

3)Cache作用

Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。

4)客户端访问授权

5)隐藏访问者的行踪

二、反向代理(reverse proxy)

在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。

反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。

你以为你是这样访问百度的:

NodeJS的正向代理、反向代理、透明代理详解

其实你是这样访问百度的:

NodeJS的正向代理、反向代理、透明代理详解

Nginx就是性能非常好的反向代理服务器,用来做负载均衡。(开放的反向代理应用:Nginx和NAT123。Nginx是单纯的反向代理,需要自行搭建反向代理服务才能使用,效率高。NAT123是结合了NAT和反向代理的应用,可以直接使用,解决80端口问题等,速度快。)

反向代理的实现:

用户和负载均衡设备直接通信,也意味着用户做服务器域名解析时,解析得到的IP其实是负载均衡的IP,而不是服务器的IP,这样有一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表,而不会影响现有的服务。

使用反向代理服务器作用主要有以下几点:

1)保护和隐藏原始资源服务器

NodeJS的正向代理、反向代理、透明代理详解

2)负载均衡

NodeJS的正向代理、反向代理、透明代理详解

三、透明代理

如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了 。透明代理的意思是客户端根本不需要知道有代理服务器的存在。

下面一些对比说明便于更好的理解:

正向代理是客户端配置,反向代理是服务器端配置。

正向代理可以访问 Google,反向代理只能访问特定网址。

正向代理中,proxy和client同属一个LAN,对server透明;

反向代理中,proxy和server同属一个LAN,对client透明。

正向代理,代理相当于一个透明的中间件 a,你访问任何网站 ABCDE 都走这个中间件 a,但在你看来,你访问的永远都是 ABCDE,而不是 a。

反向代理,固定 a 为 A 的反向代理,唯一,访问 a 相当于访问 A,访问不到 BCDE,同时在你看来,你访问的不是 A 而是 a,你甚至不知道 A 的存在。

正向代理– 我代理帮我干活。(你发出去的 http 请求是完整的 url,由代理生成 http 请求头)

反向代理– 我不知道帮我干活的是代理。(服务器自己的负载均衡服务器调度,你不用管)

透明代理– 我不知道他帮我干了活(著名的劫持, 重组 http 请求)

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-NodeJS的正向代理、反向代理、透明代理详解全部内容,希望文章能够帮你解决javascript代码实例教程-NodeJS的正向代理、反向代理、透明代理详解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: