最近一直纠结反向代理为什么要叫反向代理,哪里反了呢?感觉这个反向非常不好理解,而且我在网上看到很多人跟我类似的提问,所以翻阅了一些资料,这里总结一下。
说句人话
如果用中文说人话的方式,正向代理应该叫客户端代理,它代理的是客户端的请求;反向代理应该叫服务端代理,它代理的是服务端的服务。
大家都明白,在互联网上所有的都是做请求客户端与做服务的服务端,比如我们访问百度www.baidu.com,我们的浏览器就是客户端,百度有服务器就是服务端,我们在客户端上输入网址回车或者点击按钮就是将客户端的请求发向服务端。
代理实际上是基于客户端与服务端的衍生用法,因为某些原因,客户端不能直接请求服务端(后面有举例),而是要通过中间的代理。
Forward Proxy
Forward Proxy.pngReverse Proxy
Reverse Proxy.png如何理解Forward Proxy与Reverse Proxy
这玩意名是老外取的,中文叫正向代理与反向代理,我尤其觉得反向代理翻译得不当,所以我在上面两个标题都用了英文。
Forward Proxy应该叫前向代理,而不是正向代理;
Reverse Proxy应该叫反转代理,而不该叫反向代理
Forward Proxy与Reverse Proxy从逻辑图上看只有一个小小的区别,前者是为客户端请求做代理,所以叫Forward Proxy(前向代理);后者是为服务端服务做代理,所以对于客户端来说,是反转(交换,反过来)了,不代理客户端了,故叫Reverse Proxy(反转代理)。
所以Forward与Reverse叫法实际针对的对象都是客户端,也就是广大使用者,在客户端的代理叫前向代理,在服务端的就叫反转代理。
实际我觉得前向代理(Forward Proxy)与反转代理(Reverse Proxy)还是不好理解,就像我最刚开始说的,应该叫客户端代理与服务端代理,这样理解起来真是非常贴切,谁都能懂。
客户端代理与服务端代理用处
客户端代理(前向代理、正向代理)
我们在国内上不了google、facebook,那我们实际可以在香港建个代理服务器,我们通过代理服务器就可以访问google与facebook了,这就叫前向代理,代理的是使用者;
这跟现实生活很像,比如我想买一个华为mate 9保时捷版送给客户,懂行的都知道,中国境内是拿不到货的,华为也不公开发售,我肯定买不到,但让客户满意更重要,怎么办呢?那我可以找个关系好的中间人去帮我买,比如这个人是华为的高管,他可以拿到货,那我也就买到了,呵呵,好吧,仅仅是举例哈,实际我也不认识华为高管。
服务端代理(反转代理、反向代理)
客户端代理的话,非IT人士也可以理解,但服务端代理可能要困难一点,如果做作过服务器部署的就非常好理解了。
比如我们公司提供5个不同服务,我们部署在5个节点上的,但用户访问时不用直接请求我们5个节点上的服务,只需要访问我们的代理服务器就行了,代理服务器根据请求内容分发到不同服务器节点。这仅是一种使用场景,当然还可以做负载均衡等。
网友评论
保护后端服务器免受恶意攻击。