代理代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节,作为“中转站”,既可以转发客户端的请求,也可以转发服务器的应答。
代理有很多的种类,常见的有:匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器;透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客户端;正向代理:靠近客户端,代表客户端向服务器发送请求;反向代理:靠近服务器端,代表服务器响应客户端的请求;上一讲提到的 CDN,实际上就是一种代理,它代替源站服务器响应客户端的请求,通常扮演着透明代理和反向代理的角色。由于代理在传输过程中插入了一个“中间层”,所以可以在这个环节做很多有意思的事情,比如:负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;内容缓存:暂存上下行的数据,减轻后端的压力;安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;数据处理:提供压缩、加密等额外的功能。关于 HTTP 的代理还有一个特殊的“代理协议”(proxy protocol),它由知名的代理软件 HAProxy 制订,但并不是 RFC 标准,我也会在之后的课程里专门讲解。