代理服务器转发消息时的哪些相关头部,决定了消息能不能传过去

Posted 笔绘丹心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代理服务器转发消息时的哪些相关头部,决定了消息能不能传过去相关的知识,希望对你有一定的参考价值。

概念铺垫
1.什么是正向代理服务器,什么是反向代理服务器?

正向代理一般是客户端架设的 ,比如在自己的机器上安装一个代理软件。. 而 反向代理一般是服务器架设的 ,比如在自己的机器集群中部署一个反向代理服务器。. 3、 正向代理中,服务器不知道真正的客户端到底是谁 ,以为访问自己的就是真实的客户端。. 而在 反向代理中,客户端不知道真正的服务器是谁 ,以为自己访问的就是真实的服务器。. 4、正向代理和反向代理的作用和目的不同。. 正向代理主要是用来解决访问限制问题。. 而反向代理则是提供负载均衡、安全防护等作用。. 二者均能提高访问速度
2.什么是CDN
CDN——Content Delivery Network,内容分发网络。CDN=更智能的镜像+缓存+流量导流。CDN,是一项非常有效的缩短时延的技术。
3.什么是ADSL
ADSL是非对称数字用户线路,通常是网络运营商来提供,这里理解为网络运营商提供的IP


客户端与服务端之间,往往存在多个代理,比如上图中的origin server 只能拿到gateway传过来的ip地址,那么如何拿到user agent 的ip地址呢?看下图,两种添加头部信息的方式,可以传递ip

上图中,反向代理如果要拿到用户的IP地址来做负载均衡的话,ADSL的ip地址会是一个不错的选择。反向代理直接拿到的是CDN的IP,.也就是2.2.2.2;那么,反向代理如何拿到ADSL的IP呢?通过X-Forwarded-For 头部字段传递IP,从ADSL传递给正向代理,正向代理在X-Forwarded-For后面继续添加CDN的IP(如图所示)

这样反向代理,也就是服务端,就拿到了客户端的IP了

消息的转发头部

  • Max-Forwardas 限制proxy代理最大转发次数,仅对TRACE/OPTIONS方法有效;Max-Forwardas=1DIGIT
  • Via头部 指明经过的代理服务器的名称和版本
  • Cache-Control:no-transform 禁止代理服务器修改响应包体

以上是关于代理服务器转发消息时的哪些相关头部,决定了消息能不能传过去的主要内容,如果未能解决你的问题,请参考以下文章

代理模式

Java代理详解

RabbitMQ学习_RabbitMQ相关概念

代理模式与AOP

动态代理Dynamic Proxy

Java动态代理与Cglib库