代理服务器和反向代理服务器之间的区别是什么?
当前回答
正向代理与反向代理(2012)非常清楚地解释了正向代理和反向代理之间的区别。
qyb2zm302的答案很好地详细描述了代理的应用,但它忽略了正向代理和反向代理之间的基本概念。对于反向代理,X→ Y→ Z、 X知道Y而不是Z,反之亦然。
代理只是通信(请求+响应)的中间人。客户端<->代理<->服务器
客户端代理:(客户端<->代理)<->服务器
代理人代表客户行事。客户知道链中涉及的所有三台机器。服务器没有。
服务器代理:客户端<->(代理<->服务器)
代理代表服务器行事。客户端只知道代理。服务器知道整个链条。
在我看来,正向和反向只是客户端和服务器代理的混淆、依赖于透视的名称。我建议放弃前者,改用后者,进行明确的沟通。
当然,让事情更复杂的是,并不是每台机器都是客户端或服务器。如果上下文中存在歧义,最好明确指定代理所在的位置以及它通过隧道传输的通信。
其他回答
代理:它代表客户提出请求。因此,服务器将向代理返回响应,代理将向客户端转发响应。事实上,服务器永远不会“了解”客户端是谁(客户端的IP地址);它将只知道代理。然而,客户机肯定知道服务器,因为它基本上格式化了发往服务器的HTTP请求,但它只是将其交给代理。
反向代理:它代表服务器接收请求。它将请求转发给服务器,接收响应,然后将响应返回给客户端。在这种情况下,客户端永远不会“了解”谁是实际的服务器(服务器的IP地址)(有些例外);它将只知道代理。服务器将知道或不知道实际的客户端,这取决于反向代理的配置。
一些图表可能会有所帮助:
转发代理服务器
反向代理
让我们考虑一下服务的目的。
转发代理:
代理帮助用户访问服务器。
在反向代理中:
代理帮助用户访问服务器。
在后一种情况下,受代理帮助的人不再是用户,而是服务器,这就是我们称之为反向代理的原因。
代理(转发代理):
当LAN上的计算机连接到访问Internet的代理服务器时。好处包括只将服务器暴露在Internet上。外面的人无法直接访问计算机。转发代理可以通过缓存下载来改善用户的Internet访问。它们还可用于限制对某些网站的访问。此外,只有代理服务器需要公共地址,而不是连接到它的客户端。
反向代理:
反向代理与正向代理相反。相反,它充当连接到的服务器的代理服务器。只有反向代理需要SSL证书,只需要一个公共IP地址,它可以处理传入请求的负载平衡,以增强整体用户体验。
图片来源:使用应用程序请求路由创建转发代理
前面的大多数答案都是好的,但在我看来,没有一个答案能很好地解决区分两者的“反向”问题。要做到这一点,需要给出某种方式来可视化本质上相同的事物(代理)的“反向”性质,并且需要以一种很好的抽象方式来给出。
代理(隐式“转发代理”)将多个本地客户端连接到任意一个远程服务器:
c--
|--p--s
c--
反向代理将多个本地服务器连接到任何一个远程客户端(请注意布局如何反向):
s--
|--p--c
s--
这是一个角度问题,真正正确地理解这个概念需要抽象出非必要的(特定概念的)细节,尽管这些细节在涉及代理操作的语用学时可能非常重要。这些细节包括这样一个事实:在这两种场景中,现实是多个客户端连接到多个服务器,客户端和服务器可能不是真正的本地或远程,互联网云位于何处,或者客户端和服务器之间存在什么样的可见性。