一、定义
正向代理:是位于客户端和目标服务器之间的代理服务器。客户端向代理服务器发送请求,代理服务器代替客户端去访问目标服务器,并将从目标服务器获取的响应返回给客户端。例如,在一个公司网络环境中,员工想要访问外部受限网站,通过公司设置的正向代理服务器,代理服务器会以自己的身份向外部网站请求数据,然后将数据返回给员工的客户端。
反向代理:是位于目标服务器前面的代理服务器。客户端请求目标服务器时,实际上是请求反向代理服务器,反向代理服务器会根据一定的规则将请求转发到真实的目标服务器,并将目标服务器的响应返回给客户端。例如,一个大型网站有多个后端服务器来处理用户请求,反向代理服务器会接收用户的请求,如网页访问请求,然后将请求均衡地分配到后端的多个服务器上,最后将服务器返回的内容发送给客户端。
二、作用
正向代理
突破访问限制:可以用于访问一些受地域限制或者被屏蔽的网站。比如,在某些国家或地区,一些国外网站可能被限制访问,用户可以通过在其他没有限制的地区设置正向代理服务器来访问这些网站。
隐藏客户端真实 IP 地址:对于目标服务器来说,它看到的请求来源是代理服务器的 IP 地址,而不是客户端的真实 IP 地址。这增加了客户端的隐私性,并且在一定程度上可以防止客户端被目标服务器所在网络的安全策略限制访问。
反向代理
负载均衡:通过将请求均匀地分配到多个后端服务器,可以有效地减轻单个服务器的负载压力。例如,在电商购物节期间,网站流量巨大,反向代理服务器可以根据各后端服务器的负载情况,如 CPU 使用率、内存使用率等,合理地分配请求,保证网站的稳定性和响应速度。
提高安全性:反向代理服务器可以作为一个安全屏障,对外隐藏后端服务器的真实 IP 地址。这样可以防止后端服务器直接受到外部网络攻击,如 DDoS 攻击。因为攻击者很难直接攻击到隐藏在反向代理后面的真实服务器。
缓存功能:反向代理服务器可以缓存经常访问的内容。当客户端请求的内容已经在反向代理服务器的缓存中时,反向代理服务器可以直接返回缓存内容,而不需要将请求转发到后端服务器,这样可以大大提高响应速度。
三、工作流程
正向代理
客户端配置使用代理服务器,将请求发送给代理服务器。
代理服务器接收请求后,修改请求信息(如添加自己的 IP 地址作为请求源),然后向目标服务器发送请求。
目标服务器处理请求并返回响应给代理服务器。
代理服务器将接收到的响应返回给客户端。
反向代理
客户端向反向代理服务器发送请求,请求的是目标服务器提供的服务(如网站访问)。
反向代理服务器根据配置的规则(如负载均衡算法)选择一个后端目标服务器,将请求转发给它。
后端目标服务器处理请求并返回响应给反向代理服务器。
反向代理服务器将响应返回给客户端。
四、使用场景举例
正向代理在企业内部网络中,用于员工访问外部互联网资源,同时企业可以通过代理服务器进行访问控制和审计,监控员工的上网行为。个人用户为了隐私保护或者突破网络限制而使用一些代理软件,这些软件大多是基于正向代理的原理。
反向代理大型的 Web 应用,如电商网站、新闻网站等,使用反向代理服务器来实现负载均衡和高可用性。例如,淘宝网有大量的服务器来处理用户的购物请求,通过反向代理服务器来合理分配这些请求,保证服务质量。一些提供内容分发服务的公司,如 CDN(内容分发网络)服务商,也会广泛使用反向代理技术,将用户请求导向距离用户较近的缓存服务器,快速提供内容服务。