首页 > 技术文章 > 什么是反向代理

jin-zhe 2019-09-25 17:19 原文

https://segmentfault.com/q/1010000003491873

 

A和B直接沟通,这就等于没有代理

然后中间夹一个传话的C,C就是代理了,A通过C把信息传递给B,然后再把B的反馈转达给A.

在这个过程中,A知道沟通的直接目标是B,只不过由于各种原因无法直接和B面对面,需要中间人C,这就是所谓“正向代理”,其实i我们很少说正向代理,一般直接说代理

举个例子:

我下访问www.google.com,然而大家都知道它被抢了,我没法直接访问它,于是我连接了一个VPN

服务并设定其为本地HTTP访问的代理,然后我再访问www.google.com,此时我的请求被该VPN服务代理了,它帮我访问了www.google.com然后把返回结果给我(叫做代理,不是叫做反向代理)

  • 这个例子是代理的一种应用场景,但并非代表代理只能用于这个
  • 最重要的特征是我知道www.google.com的存在,而且我访问的网址也的确是www.google.com,只不过我的访问请求由VPN代理来转交,同样相应也是如此
  • 在本例中,代理是透明的,用户有可能不知道他的存在(通常是知道的,只不过代理的设置及可能不是他自己来做)

 

 

另一种情况是:

A并不知道B的存在,它只知道找C就可以得到想要的回复,对于A来说有没有B,B!,C,C!......D,F都不重要,只要有C就够了。而C则根据情况去获取反馈然后相应给A。                         

这种就叫反向代理了

举个例子:

我有一个Nginx服务部署再www.mysite.com的80端口,用户访问它就可以看见我做的网站;在我的网站中有一些Ajax请求获取JSON数据,然而提供这些数据的API Service部署在服务器上的8000端口,该端口由于防火墙的阻挠使得用户无法直接访问到。

于是我重新配置了Nginx,让它把所有经由:80/api/的访问请求都代理给localhost:8000,然后把响应返回给原始请求方,这就是反向代理

  • 这是反向代理的一种应用场景,但并非代表它只能这样用
  • 最重要的特征是我的用户压根不知道localhost:8000这个服务的存在,并且即使知道也访问不到-----开VPN也访问不到,这是两码事
  • 对于用户来讲,唯一的“对话”方只有www.mysite.com(80端口),他们不知道也不比要知道后面发生了什么

 

 参考  https://blog.csdn.net/qq_32963841/article/details/100552329

 

 

嗯,就酱~~

推荐阅读