最近我发现一个很有意思的现象,就是关于正向代理与反向代理的区别,很多人都没有真正理解。
所以我特意写了这篇文章,以清晰的解释下正向代理与反向代理的异同。让大家对正向代理与反向代理的理解更透彻。
目录
站在更高层次去理解
我们理解一个东西时,最好不要陷入具体的技术中去,比如Http Proxy,这是正向代理还是反向代理 ,或Nginx代理等。
这种思维方式会让我们陷入具体的技术中,当来了个新技术时,我们很可能又搞不清该叫它正向代理还是反向代理了。
所以,我们要学会往上站一层,从更高的角度去理解一个概念。
那对于正向或反向代理,识别的关键在于:
代理的责任方是谁,透明方又是谁
一旦你理解了这个,再来讲具体的技术,你就会很清晰的识别它到底是正向代理还是反向代理了
代理中的两种角色
在代理这个技术的世界中,恒定存在两种角色。它们分别是:
服务提供方,提供服务访问服务访问方,访问服务所谓代理,不管是正向代理还是反向代理,都是协助服务访问方顺利访问服务提供方提供的服务
所以问题就来了:
对于这两种角色,该由谁来负责代理行为,这就决定了到底是正向代理还是反向代理。
正与反,只是角度问题
其实,所谓的正向或反向,完全是看站在哪个角色得来的概念名词。
当然,我们是站在服务访问方的角度来命名的,也就是:
当代理这个行为由服务访问方来负责操作,服务提供方为透明时,我们称之为:正向代理当代理这个行为由服务提供方来负责操作,服务访问方为透明时,我们称之为:反向代理所以,看到没,所谓的正向,反向,是站在服务访问方来命名的。
具体点来说:
我用手机访问公司内网服务,我在手机上设置了Http Proxy代理 ,才访问到这个内网服务。这种就是正向代理。因为代理的责任者是访问这一方,而不是服务提供方我用手机访问一个服务,这个服务使用了nginx做了跳转,我访问到了这个服务。那这种就是反向代理,因为服务访问方没有做代理这个事情,这个事情是由服务提供方做了的。当代理由服务访问方来操作,对服务提供方透明时,这种我们称之为正向代理
当代理由服务提供方来操作,对服务访问方透明时,这种我们称之为反向代理
那有些人会问,如果我的Http Proxy服务是由服务提供方提供的呢,是不是就不是正向代理 ,而是反向代理了呢?
当然不是,不管你的Http Proxy是放在内网,还是放在外网,还是什么,因为最终仍是调用方要知晓并设置这个Proxy,所以它当然就是正向代理了。
而与之相反的是,类似网关或nginx代理设置,对于访问方来说,并不需要主动去设置一个代理或连接VPN这个操作,对调用方是透明的,当然它就是反向代理了。
总结
所以,显而易见,http proxy ,socks5 proxy, vpn这些统统为正向代理 ,因为它们都要调用方主动知晓并设置。
而网关,nginx反向代理就是反向代理了。因为调用方完全不清楚这些背后是怎么设置的,对调用方是透明的。
现在应该很清楚正向代理与反向代理的区别了吧。
代理的责任方是谁,透明方又是谁
记住这一条就行了。
再次强调,理解一个技术或概念,切忌就技术论技术,要学会往上站一层去理解这个技术。