什么是代理呢?用了这么久的Nginx,也听说过Nginx搭建反向代理服务器。正向代理是什么?反向代理是什么?两者的区别呢?
代理
打个比方,代理就是我们生活中所熟知的中介。他负责联系服务方和客户方。在服务器层面,就是客户端和服务器中间的一个服务器。这个服务器其实和正常的服务器没什么两样。只不过,他将客户发来的请求,转发到真正处理请求的服务器。或者是下一个代理服务器。
正因为有了代理服务器的存在,才有了墙的存在。墙其实就是代理服务器。比如我们访问google.com
,代理服务器接受到了这个请求,正常的话,他应该去转发请求的。但是,墙这个代理很邪恶,他不转发,然后告诉你,哎呀,这个没有啊,找不到。然后就访问不了了。
正向代理
举个生活中的例子。比如你向隔壁老王借钱,但是隔壁老王和你不熟,不借给你。然后呢?你想到了,隔壁老王和你媳妇熟啊,于是,你让你媳妇跟隔壁老王借钱,隔壁老王一看是你媳妇和他借钱,十分爽快的答应了。然后你媳妇把借来的钱又给你了。
综上,隔壁老王只知道把钱借给你媳妇了,不知道实际上是借给你了。而你,知道这一切。
你就是客户,你媳妇就是正向代理服务器,老王就是真正的服务器。客户向代理服务器请求,代理服务器向真正的服务器请求。然后处理之后的请求,代理服务器再转给你。整个过程中,客户知道代理服务器的存在。而真正的服务器,感知不到客户的存在,只能感知到代理服务器的存在。 对他来说,代理服务器就是他的客户,所以他感知不到真正的客户。
反向代理
举个生活中的例子,你遇到了坏人,然后急中生智,你掏出了手机,打电话给110。然后打通了,过了一会儿,警察来了,然后把坏人抓走了。
等等,仔细想一下,全国都哪都有警察,为什么都打一个电话?拨打110之后,会有一个处理系统,来确认你的位置,然后派出相应的警察来帮助你解决问题。
这个过程中,如果你不仔细想,你不会感觉到有这个处理系统的存在的。你也不知道,到底哪个地方的110来帮你解决问题,你只知道有警察来了,问题解决了。
在上面这个过程中,你就是客户,处理系统就是反向代理服务器,警察就是对应的服务器。反向代理服务器,让客户感觉到方便,向反向代理服务器请求,就好像向真的服务器请求一样。客户无法感知到真正的服务器的存在的。
区别
图中的两个方框对与方框之外的事物,像黑盒一样。
正向代理服务器是对真正服务器透明,真正的服务器,感知不到客户存在。
反向代理服务器是对客户透明,客户,感知不到真正的服务器。