反向代理与正向代理
代理服务器已成为具有分布式部分的现代应用程序的常见要求。例如,您有消息代理、事件队列、无服务器功能、需要客户端单点入口的虚拟服务器。
事实上,考虑一下这个架构图:
如果您查看上图,您会看到后端资源前面放置了一个代理,让客户端与一个点交互以访问您的应用程序。
这正是代理的本质和作用!
事实上,代理主要有两种类型:
- 转发代理
- 反向代理
因此,我们的目标是在本文中更详细地探讨这两个代理,看看它最有用的地方。
什么是反向代理?
反向代理是位于应用程序和客户端之间的代理服务器。考虑这个图:
反向代理位于服务器资源的前面。因此,当您想要从服务器请求资源时,您需要与反向代理进行通信,然后反向代理将请求发送到相关资源并将响应返回给您。
简而言之,反向代理是您和您要访问的网站之间的中间人。由于这种性质,它被用于各个方面,例如:
- 负载平衡:它有助于在多个服务器之间分配传入流量,从而通过分散负载来提高资源的速度和可靠性。这可以确保没有任何一台服务器成为瓶颈,从而可以增强系统的整体性能。
- 安全性和匿名性:反向代理掩盖了后端服务器的特征和存在,提供了额外的安全层。此外,它们还可以充当应用程序防火墙,以防止 SQL 注入、跨站点脚本 (XSS) 等攻击。因此,他们可以在将请求发送到后端之前过滤掉请求。
- 内容缓存:反向代理缓存来自服务器的出站 Web 内容,并根据请求将其直接提供给用户。这减少了服务器上的负载并加快了响应时间,因为内容是从本地缓存而不是源服务器传递的。
反向代理如何工作?
了解反向代理的工作原理非常重要。事实上,其工作原理可以概括为以下简单步骤:
- 客户端请求:客户端将首先请求资源。当发出请求时,它首先转到反向代理服务器。
- 请求评估:反向代理根据请求的规则和内容评估请求。它决定是从缓存中处理请求还是将其发送到实际的服务器资源。
- 与后端服务器通信:如果请求未缓存,反向代理会将请求转发到适当的后端服务器。如果已缓存,则通过缓存返回响应。
- 负载均衡:反向代理使用负载均衡算法,根据当前连接数、服务器响应时间和服务器运行状况等因素来决定将请求路由到哪个服务器。
- 请求处理:后端服务器处理完请求后,会将响应发送回反向代理。
- 缓存:如果启用了缓存,反向代理将缓存通过资源生成的响应。
- 响应传送:反向代理将响应发送回客户端。
通过这种方法,反向代理似乎是内容的来源,而不是后端服务器。
使用反向代理的优点
由于上述性质,反向代理为其用户提供了两个主要好处:
- 提高安全性:如前所述,反向代理有助于屏蔽内部服务器资源,使系统资源完全匿名。此外,通过附加的安全层,反向代理可以在将请求发送到服务器之前过滤掉请求,以确保仅处理有效的请求。
- 增强的性能:反向代理有助于内容缓存和负载平衡。这提高了整体系统性能,因为可以从缓存中快速提供内容,而不会造成系统资源紧张。它还通过根据负载路由请求来优化服务器资源的利用。
使用反向代理的缺点
然而,反向代理确实有一些缺点:
- 设置和管理的复杂性:设置反向代理并不总是那么简单。它涉及配置网络设置、管理流量规则以及通常将其与其他网络组件集成。因此,您通常需要具有良好 IT 技能的人来处理它。
- 单点故障:由于反向代理位于用户和服务器之间,因此它处理所有传入和传出流量。如果没有设置冗余,并且由于某种原因出现故障,所有流量都会被阻塞。这意味着在问题解决之前没有人可以访问您的网站或服务。
什么是转发代理?
另一方面,有“转发代理”,或者简单地称为代理服务器。
转发代理是一个或多个用户设备与互联网之间的中间件。例如,考虑下图:
如上所示,所有请求在到达互联网之前都会经过代理。它代表客户端运行并将请求路由到目的地。接下来,它评估响应并将其转发回原始客户端。
这些用于以下情况:
- 隐私和匿名:转发代理将其 IP 地址绑定到请求,从而隐藏用户的真实 IP 地址。这对于想要浏览互联网而不透露其位置或身份的个人和组织非常有用。
- 安全性:转发代理可以通过阻止 Internet 和内部网络设备之间的直接连接来提供额外的安全层。这有助于通过在传入数据到达用户设备之前对其进行扫描来防范恶意软件和其他安全威胁。
- 网页抓取:转发代理可用于您想要尝试网页抓取的情况。某些站点具有基于 IP 的阻止,可以通过转发代理来避免。他们可以通过转发代理路由他们的请求。这样,网站就看不到抓取工具的原始 IP 地址,而是看到代理的 IP 地址。而且,对于某些代理,您可以轮换 IP,这意味着每个请求都将使用不同的 IP 地址,从而使站点更难阻止。
转发代理如何工作?
这可以概括为以下五个步骤:
- 请求发起:客户端首先向互联网发起请求。
- 代理验证:请求首先进入代理服务器。它验证请求并确保没有任何可疑之处。此外,它还会检查用户是否可以查看资源以及请求是否在其缓存中。
- 请求发送:如果请求有效,代理会将其发送到互联网。但是,在执行此操作之前,它会检查其缓存,如果存在缓存命中,则从缓存中提供服务。
- 响应生成:互联网生成响应并将其发送回代理。
- 响应传递:代理将验证互联网发送的响应,如果有效且安全,则将其转发回客户端。
使用转发代理的优点
显然,转发代理是非常有益的。通过使用转发代理,您可以:
- 用户匿名:使用转发代理可以让用户在互联网上完全匿名,因为任何人都看不到他们的 IP 地址。相反,代理 IP 地址用于通信,从而隐藏用户。
- 管理控制:转发代理有助于控制连接到网络的用户可以查看的内容。例如,公司可能会在工作时间阻止访问流媒体网站,以保持员工的注意力。这有助于维持高效的环境并确保互联网的使用符合组织政策。
- 内容过滤:转发代理可以过滤掉不需要的或不安全的内容,防止其到达网络用户。这可能意味着阻止不适当或危险的网站,停止可能包含病毒的下载,或阻止访问试图诱骗您放弃个人信息的网络钓鱼网站,从而为所有用户保持网络安全和清洁。
使用转发代理的缺点
但是,使用转发代理确实有其缺陷。
- 性能差:使用转发代理可能会减慢速度。由于所有互联网流量都必须通过代理,因此它可能成为瓶颈,特别是当代理服务器速度不是很快或同时处理大量请求时。
- 需要额外的管理:拥有转发代理也意味着有更多的东西需要管理。它需要得到正确的设置、维护和监控,以确保它正常工作而不会引起任何新问题。这可能需要额外的时间和资源,并且您可能需要具有特定技术技能的人来处理它。
我应该使用哪种代理?
鉴于所讨论的所有内容,您可能想知道 – 我应该使用什么?我会从正向代理还是反向代理中受益更多?
嗯,重要的是要知道这里没有正确或错误的答案。这取决于您的用例以及您打算如何使用它。但您在做出决定之前可以考虑以下一些准则。
- 考虑您的主要目标:您是否希望管理和保护内部用户的互联网访问?如果这是您的重点,那么转发代理可能是您的最佳选择。它过滤内容、执行策略并维护用户匿名。另一方面,如果您对管理外部用户访问服务器的方式更感兴趣,例如平衡服务器负载和保护服务器,则反向代理会更合适。
- 考虑安全需求:如果您主要关心的是保护后端服务器免受威胁,则反向代理可以充当盾牌来提供帮助。它向外界隐藏了服务器的真实详细信息。但是,如果您想要保护和监控网络内部的出站 Internet 请求,转发代理就是您的工具,因为它可以监控和过滤出站流量。
- 评估性能要求:如果服务器性能和正常运行时间至关重要(例如,如果您运行高流量网站),反向代理可以帮助分配流量并减少加载时间。但是,如果性能问题更多的是控制来自内部用户的流量,则转发代理可以在不影响核心服务器操作的情况下对此进行管理。
- 评估管理能力:考虑您管理和维护这些代理的能力。反向代理可能需要更复杂的设置和管理,但如果您有 IT 资源来处理它,那么它是合适的。转发代理可能更容易实现,但可能需要持续管理来更新规则和监视用户活动。
- 了解您的运营规模:如果您的运营规模较大,需要处理大量用户请求或管理服务的大量入站流量,则反向代理可能至关重要。对于较小的操作或需要管理的内部用户较少时,转发代理可能就足够了并且更具成本效益。
结论
正向和反向代理用于现代应用程序和组织。它们在提高使用环境的整体性能和安全性方面发挥着关键作用。
但是,实施的成功最终取决于您选择的正确代理。因此,首先评估您的需求,然后决定您将使用的代理。