负载均衡
健康检查:使用“心跳”等机制监控后端服务器,发现有故障就及时“踢出”集群,保证服务高可用;
安全防护:保护被代理的后端服务器,限制 IP 地址或流量,抵御网络攻击和过载;
加密卸载:对外网使用 SSL/TLS 加密通信认证,而在安全的内网不加密,消除加解密成本;
数据过滤:拦截上下行的数据,任意指定策略修改请求或者响应;
内容缓存:暂存、复用服务器响应,这个与第 20 讲密切相关,我们稍后再说。
HTTP 代理就是客户端和服务器通信链路中的一个中间环节,为两端提供“代理服务”;
代理处于中间层,为 HTTP 处理增加了更多的灵活性,可以实现负载均衡、安全防护、数据过滤等功能;
代理服务器需要使用字段“Via”标记自己的身份,多个代理会形成一个列表;
如果想要知道客户端的真实 IP 地址,可以使用字段“X-Forwarded-For”和“X-Real-IP”;
专门的“代理协议”可以在不改动原始报文的情况下传递客户端的真实 IP。
问题
1、你觉得代理有什么缺点?实际应用时如何避免?
2、你知道多少反向代理中使用的负载均衡算法?它们有什么优缺点?
补充
01现实生活中也有很多“代理”,例如房产代理、留学代理、保险代理、诉讼代理,可以对比理解一下。
02知名的代理软件有HAProxy、Squid、 Varnish等,而Nginx虽然是Web服务器,但也可以作为代理服务器,而且功能毫不逊色。
03“Via”是HTTP协议里规定的标准头字段,但有的服务器返回的响应报文里会使用“X-Via”,含义是相同的。
04因为HTTP是明文传输,请求头很容易被窜改,所以“X-Forwarded- For”也不是完全可信的。
05 RFC7239 定义了字段“Forwarded",它可以代替“X-Forwarded- -For”“X- -Forwarded-Host”等字段,但应用得不多。