HTTP 基础知识之代理服务器

有些人一旦错过了,真特么谢天谢地。

 

代理的作用

由于代理处在HTTP通信过程的中间位置,相应地就对上屏蔽了真实客户端,对下屏蔽了真实服务器,简单的说就是“欺上瞒下”。在这个中间层的“小天地”里就可以做很多的事情,为HTTP协议增加更多的灵活性,实现客户端和服务器的“双赢”。

最基本的功能是负载均衡:因为在面向客户端时屏蔽了源服务器,客户端看到的只是代理服务器,源服务器究竟有多少台、是哪些IP地址都不知道。于是代理服务器就可以掌握请求分发的“大权”,决定由后面的哪台服务器来响应请求。

 

代理中常见的负载均衡算法:轮训,一致性哈希

除了负载均衡外,还有其他的方式

  • 健康检查:使用“心跳”等机制监控后端服务器,发现有故障就及时“踢出”集群,保证服务高可用;
  • 安全防护:保护被代理的后端服务器,限制IP地址或流量,抵御网络攻击和过载;
  • 加密卸载:对外网使用SSL/TLS加密通信认证,而在安全的内网不加密,消除加解密成本;
  • 数据过滤:拦截上下行的数据,任意指定策略修改请求或者响应;
  • 内容缓存:暂存、复用服务器响应,这个与第20讲密切相关,我们稍后再说。

 

代理服务分几大类

  • 匿名代理
  • 透明代理
  • 正向代理
  • 反向代理

 

最常见的是反向代理

 

代理相关头字段

代理服务器需要用字段“Via”标明代理的身份

最常用的两个头字段是“X-Forwarded-For”和“X-Real-IP”

“X-Forwarded-For”的字面意思是“为谁而转发”,形式上和“Via”差不多,也是每经过一个代理节点就会在字段里追加一个信息。但“Via”追加的是代理主机名(或者域名)

“X-Forwarded-For”追加的是请求方的IP地址。所以,在字段里最左边的IP地址就是客户端的地址。

说明:“X-Real-IP”是另一种获取客户端真实IP的手段,它的作用很简单,就是记录客户端IP地址,没有中间的代理信息,相当于是“X-Forwarded-For”的简化版。如果客户端和源服务器之间只有一个代理,那么这两个字段的值就是相同的。

 

代理协议 - The PROXY protocol

“代理协议”有v1和v2两个版本,v1和HTTP差不多,也是明文,而v2是二进制格式。今天只介绍比较好理解的v1,它在HTTP报文前增加了一行ASCII码文本,相当于又多了一个头。

 

posted @ 2021-12-09 08:59  方达达  阅读(26)  评论(0编辑  收藏  举报