A reverse proxy protects web servers from attacks and can provide performance and reliability benefits. Learn more about forward and reverse proxies.
反向代理是位于 Web 服务器前面的服务器,将客户端(例如 Web 浏览器)请求转发到这些 Web 服务器。 反向代理通常用于帮助提高安全性、性能和可靠性。 为了更好地理解反向代理的工作原理以及它可以提供的好处,让我们首先定义什么是代理服务器。
转发代理,通常称为代理、代理服务器或 Web 代理,是位于一组客户端计算机前面的服务器。 当这些计算机向 Internet 上的站点和服务发出请求时,代理服务器会拦截这些请求,然后像中间人一样代表这些客户端与 Web 服务器通信。
例如,让我们命名参与典型转发代理通信的 3 台计算机:
A:这是用户的家用电脑 B:这是一个转发代理服务器 C:这是一个网站的源站(存储网站数据的地方)
在标准的 Internet 通信中,计算机 A 会直接联系计算机 C,客户端向源服务器发送请求,源服务器响应客户端。 当转发代理到位时,A 将改为向 B 发送请求,然后 B 将请求转发给 C。C 然后向 B 发送响应,B 将响应转发回 A。
为什么会有人将这个额外的中间人添加到他们的 Internet 活动中? 人们可能想要使用正向代理有几个原因:
- 为了避免国家或机构的浏览限制——一些政府、学校和其他组织使用防火墙来让他们的用户访问有限版本的互联网。 转发代理可用于绕过这些限制,因为它们让用户连接到代理而不是直接连接到他们正在访问的站点。
- 阻止访问某些内容 - 相反,也可以设置代理来阻止一组用户访问某些站点。 例如,学校网络可能被配置为通过启用内容过滤规则的代理连接到 Web,拒绝转发来自 Facebook 和其他社交媒体网站的响应。
- 为了在网上保护他们的身份——在某些情况下,普通互联网用户只是希望增加在线匿名性,但在其他情况下,互联网用户居住的地方政府可能会对持不同政见者施加严重后果。 在网络论坛或社交媒体上批评政府可能会导致这些用户被罚款或监禁。 如果这些持不同政见者之一使用转发代理连接到他们发布政治敏感评论的网站,则用于发布评论的 IP 地址将更难追溯到持不同政见者。 只有代理服务器的 IP 地址是可见的。
反向代理是位于一个或多个 Web 服务器前面的服务器,拦截来自客户端的请求。 这与前向代理不同,前向代理位于客户端前面。 使用反向代理,当客户端向网站的原始服务器发送请求时,这些请求会在网络边缘被反向代理服务器拦截。 然后反向代理服务器将向源服务器发送请求并接收来自源服务器的响应。
正向和反向代理之间的区别很微妙但很重要。 一种简化的总结方式是说转发代理位于客户端前面,并确保没有源服务器直接与该特定客户端通信。 另一方面,反向代理位于源服务器前面,确保没有客户端直接与该源服务器通信。
再一次,让我们通过命名所涉及的计算机来说明:
D:任意数量的用户家用电脑 E:这是一个反向代理服务器 F:一台或多台源站
通常,来自 D 的所有请求都将直接发送给 F,F 会将响应直接发送给 D。使用反向代理,来自 D 的所有请求将直接发送给 E,E 将其请求发送给 F 并从 F 接收响应。E 将 然后将适当的响应传递给 D。
下面我们概述了反向代理的一些好处:
- 负载平衡 - 一个每天都有数百万用户的热门网站可能无法使用单个源服务器处理其所有传入站点流量。 相反,站点可以分布在不同服务器池中,所有服务器都处理对同一站点的请求。 在这种情况下,反向代理可以提供负载平衡解决方案,将传入流量平均分配给不同的服务器,以防止任何单个服务器过载。 如果一台服务器完全失效,其他服务器可以加紧处理流量。
- 防止攻击——有了反向代理,网站或服务永远不需要透露其原始服务器的 IP 地址。 这使得攻击者更难利用针对他们的有针对性的攻击,例如 DDoS 攻击。 相反,攻击者只能针对反向代理,例如 Cloudflare 的 CDN,后者将具有更严格的安全性和更多资源来抵御网络攻击。全球服务器负载平衡 (GSLB) - 在这种负载平衡形式中,网站可以分布在全球的多台服务器上,反向代理会将客户端发送到地理位置最接近它们的服务器。 这减少了请求和响应需要传输的距离,从而最大限度地减少了加载时间。
- 缓存 - 反向代理还可以缓存内容,从而提高性能。 例如,如果巴黎的用户访问洛杉矶的 Web 服务器的反向代理网站,用户可能实际上连接到巴黎的本地反向代理服务器,然后必须与洛杉矶的源服务器通信。代理服务器 然后可以缓存(或暂时保存)响应数据。 随后浏览该站点的 Parisian 用户将从 Parisian 反向代理服务器获取本地缓存版本,从而获得更快的性能。
- SSL 加密 - 为每个客户端加密和解密 SSL(或 TLS)通信对于源服务器来说计算量很大。 反向代理可以配置为解密所有传入请求并加密所有传出响应,从而释放源服务器上的宝贵资源。
一些公司构建自己的反向代理,但这需要大量的软件和硬件工程资源,以及对物理硬件的大量投资。 获得反向代理的所有好处的最简单且最具成本效益的方法之一是注册 CDN 服务。 例如,Cloudflare CDN 提供上面列出的所有性能和安全功能,以及许多其他功能。