正向代理和反向代理






正向代理:注意所有用户使用一个代理和服务器交互
1)用户希望代理服务器帮助自己,和要访问服务器通信,为了实现此目标,需要以下工作:
用户IP报文的目的IP = 代理服务器IPb)
用户报文端口号 = 代理服务器监听端口号c)
HTTP 消息里的URL要提供服务器的链接
2)代理服务器可以根据c)里的链接与服务器直接通信
3)服务器返回网页
4)代理服务器打包3)中的网页,返回用户。


反向代理:用户直接和服务器代理交互,但是其实并不是一个服务器
1)需要有一个负载均衡设备来分发用户请求,将用户请求分发到空闲的服务器上
2)服务器返回自己的服务到负载均衡设备
3)负载均衡将服务器的服务返回用户
以上的潜台词是:
用户和负载均衡设备直接通信,也意味着用户做服务器域名解析时,
解析得到的IP其实是负载均衡的IP,而不是服务器的IP,
这样有一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表,而不会影响现有的服务。
有些大公司不想让别人知道自己主服务器的位置。

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


正向代理中,proxy和client同属一个LAN,对server透明;
反向代理中,proxy和server同属一个LAN,对client透明。
实际上proxy在两种代理中做的事都是代为收发请求和响应,
不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理。
他具有缓存、安全、负载均衡等作用,反向代理是和服务器集群在一起的,并且知道集群的内部情况。

所谓反向代理基本上就是一个服务端的负载均衡器。
正向代理:代理端代理的是客户端。
反向代理:代理端代理的是服务端。
一个是代理(v)客户端,为客户端收发请求,使真实客户端对服务器不可见。
一个是代理(v)服务器,为服务器收发请求,使真实服务器对客户端不可见。

普通代理,forward proxy,是服务于特定用户(比如说一个公司内 / 一个局域网内的客户)以访问非特定的服务;
反向代理,reverse proxy,是服务于非特定用户(对于公开互联网服务而言,通常是所有用户)以访问特定的服务。

这个图最能说明问题:

 

 

自己看总链接:https://www.zhihu.com/question/24723688


posted @ 2017-05-22 19:41  Adamanter  阅读(120)  评论(0编辑  收藏  举报