【转载】代理与反向代理
没有代理的请求过程
- 在没有代理服务器时,客户端和服务器之间的请求和响应过程

代理服务器
概念
- 代理服务器是位于客户端和服务器之间的软件或硬件服务器,客户端连接到代理以请求真实服务器的连接
- 从本质上讲,代理服务器(又名转发代理)是一种软件或硬件,可以代表客户端促进从其他服务器请求资源,从而使客户端与服务器匿名
- 通常,转发代理用于缓存数据、过滤请求、记录请求或转换请求(通过添加/删除标头、加密/解密或压缩资源)
- 转发代理可以通过代表客户端发送请求,在服务器隐藏客户端的身份

作用
缓存
使用代理服务器,可以带来缓存的好处。代理服务器可以缓存一些预计不会发生改变的数据,比如一些静态数据等
当客户端再次发送相同的请求时,代理服务器可以将缓存数据直接返回,而不用再次请求服务器,来降低请求延迟,减少网络流量的优点

匿名
- 代理服务器还有另一个作用,就是可以在服务器端隐藏客户端的身份。服务端只能看到请求方是代理服务器,而不知道具体发出请求的客户端

访问控制
- 代理服务器还可以用来做一些访问控制。比如在公司的网络出口建立代理服务器,因为所有员工的客户端请求都会通过代理服务器访问外部网络服务,可以在代理服务器中阻止某些恶意网站的访问,保护客户端免受恶意网站的侵害

访问记录
- 同样,由于所有流量都通过代理,因此可以在代理服务器记录请求日志,这些日志可用于识别任何请求记录或对某些站点的缓存需求做出评估

反向代理服务器
概念
反向代理代表的是服务器,在客户端看来反向代理就是一个普通的服务器
反向代理将请求转发到一个或多个处理请求的普通服务器上。返回来自普通服务器的响应,就好像它直接来自原始服务器一样,让客户端不知道原始服务器的身份
在下图反向代理的示例中,反向代理服务器隐藏了最终给客户端提供服务的服务器身份。对于客户端来说,只能看到反向代理服务器

作用
缓存
- 反向代理服务器也可以在本地缓存那些不变的数据。因此,当另一个客户端发送对相同内容的请求时,它可以从其本地缓存中获取数据返回,而不用请求真实服务器。这样可以降低请求延迟、减少服务器负载

匿名
- 代理最明显的作用就是匿名能力,反向代理也有匿名的作用
- 但是反向代理和代理的匿名有所区别,反向代理的匿名是为了让客户端不知道最终的目标服务器的身份。这种匿名能力可以保护服务端免受客户端的DDoS攻击等

负载均衡
- 反向代理还有一个很大的作用便是做服务器之间的负载均衡。反向代理可以使用一些负载均衡算法,帮助在服务器之间均匀分配流量,从而提高可靠性和可用性

灰度发布
- 很多时候我们的项目在发布新功能时,并不会将新功能全量发布。比如掘金社区新增了某界面功能,但是不确定用户对新功能使用的反应,需要在一部分用户中进行测试,而通过反向代理服务器可以进行设置,按照特定的模式请求到不同的服务器上。比如10%的请求到新服务
路由功能
- 反向代理还可以作为微服务架构中的网关或路由。它可以将映射到正在运行的实际服务上,例如
- 如果客户端要查询juejin.com的推荐文章,它会将请求路由到服务1,该服务器提供推荐文章查询服务
- 如果客户端是发布一篇新文章,则路由到服务器2,该服务提供文章发布功能
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cv-programmer!





