目录

谈谈正向代理与反向代理

代理服务器是介于客户端与服务器之间,充当中间人的角色,可以有效提高系统的安全性、性能和可拓展性。


正向代理

概念

正向代理位于客户端与服务器中间的代理服务器。

客户端将请求发送给正向代理,然后由代理服务器将请求转发给目标服务器。服务器处理请求之后,将结果传回代理服务器,然后代理服务器将结果转发给客户端。

https://picx-img.pjmcode.top/20240902/image-image.73tw0jixkw.webp
正向代理

特点

  1. 隐藏客户端身份:正向代理可以隐藏客户端的真实地址,保护客户端的隐私
  2. 访问控制:正向代理可以根据一定的规则去限制或允许客户端的访问请求,实现访问控制的功能
  3. 缓存加速:正向代理可以缓存经常访问的页面,提高访问速度,减轻服务器压力

使用场景

  1. 突破网络限制:在某些地区或网络环境下,用户可能无法直接访问某些网站或服务。此时,可以通过设置正向代理来突破这些限制,实现访问
  2. 网络安全:通过正向代理,企业可以监控和管理员工的网络访问行为,隐藏客户端真实 IP,防止敏感数据泄露
  3. 内容过滤:学校、图书馆等公共场所可以通过正向代理过滤不良内容,保护用户免受不良信息的侵害。
  4. 提高访问速度:代理服务器设置硬盘缓冲区,可以将部分高频请求的响应数据保存到缓冲区中,以提高访问速度。

反向代理

概念

客户端将请求发送给反向代理,然后由代理服务器根据一定的规则将请求转发给后端服务器。后端服务器将响应返回给代理服务器,再由代理服务器将响应转发给客户端。反向代理对客户端是透明的,客户端无需知道实际服务器的地址,只需将反向代理当作目标服务器一样发送请求就可以了。

https://picx-img.pjmcode.top/20240902/image-image.6t727e80ox.webp
反向代理

特点

  1. 负载均衡:反向代理可以根据后端服务器的负载情况,将请求分发到不同的服务器上,实现负载均衡,提高系统的整体性能。
  2. 安全性增强:反向代理可以隐藏后端服务器的真实地址和端口,防止直接攻击(如 DoS/DDoS)。同时,还可以实现 SSL 加密、访问控制等安全功能。
  3. 缓存优化:反向代理可以缓存静态资源,减少后端服务器的负载,提高响应速度。

使用场景

  1. Web 应用:在 Web 应用中,反向代理常用于实现负载均衡、安全访问控制以及缓存优化等功能。
  2. API 网关:API 网关通常采用反向代理的方式,对外部请求进行统一管理和调度,实现 API 的安全、高效访问。
  3. CDN 加速:内容分发网络(CDN)通过在全球范围内部署反向代理服务器,实现内容的就近访问和加速传输。

正反向代理的比较

相同点

  1. 位置和功能: 正向代理和反向代理都位于客户端和真实服务器之间,它们的主要功能都是将客户端的请求转发给服务器,然后再将服务器的响应转发给客户端。
  2. 提高访问速度: 两者都能通过缓存机制提高访问速度。当客户端请求某个资源时,如果代理服务器已经缓存了该资源,就可以直接从缓存中提供,而无需再次从原始服务器获取,从而节省了时间和带宽。

不同点

  1. 代理对象: 正向代理是为客户端提供代理服务,即服务器不知道真正的客户端是谁。而反向代理则是为服务器提供代理服务,即客户端不知道真正的服务器是谁。
  2. 架设位置: 正向代理通常是由客户端架设的,而反向代理则是由服务器架设的。
  3. 用途和目的: 正向代理的主要用途是为在防火墙内的局域网客户端提供访问 Internet 的途径,侧重于解决访问限制问题。而反向代理的主要用途是将防火墙后面的服务器提供给 Internet 用户访问,其目的在于实现负载均衡、安全防护等。
  4. 服务对象: 在正向代理中,服务器不知道真正的用户是谁;而在反向代理中,用户不知道真正的服务器是谁。

四层和七层中反代的区别

四层中根据用户的 IP+PORT 来做 hash

七层中根据 Http 协议中的属性来做 hash(如 Header、Cookies)

总结

正向代理主要关注客户端的访问需求和安全性,而反向代理则更注重后端服务器的负载均衡、安全性和性能优化。