我们都知道HTTP协议是一个端对端协议:浏览器和服务器,也就是请求方和应答方。
但现实中,这两个端之间相隔甚远,不可能两点一线地进行网络协议传输,中间肯定是需要经过其他的服务器去进行中转,直到真正要寻找的请求方。
就像你租房子,很难一下子就找到真正的房东,中间总要经历个中介(这个比喻可能不是很恰当)。
这个,就是HTTP的代理服务。
但其实 HTTP 协议里对它并没有什么特别的描述,它就是在客户端和服务器原本的通信链路中插入的一个中间环节,也是一台服务器。对于代理服务,定义就是:服务本身不生产内容,而是处于中间位置转发上下游的请求和响应,具有双重身份:面向下游的用户时,表现为服务器,代表源服务器响应客户端的请求;而面向上游的源服务器时,又表现为客户端,代表客户端发送请求。
而且代理还有一个功能是负载均衡。因为在面向客户端时屏蔽了源服务器,客户端看到的只是代理服务器,源服务器究竟有多少台、是哪些 IP 地址都不知道。于是代理服务器就可以掌握请求分发的“大权”,决定由后面的哪台服务器来响应请求。
还能起到安全防护的作用,保护被代理的后端服务器,限制 IP 地址或流量,抵御网络攻击和过载。
同时还可以健康检查:使用“心跳”等机制监控后端服务器,发现有故障就及时“踢出”集群,保证服务高可用。
此文章为2月Day16学习笔记,内容来源于极客时间《透视HTTP协议》,强烈推荐该课程!