代理服务器和反向代理服务器之间的区别是什么?


当前回答

我发现下图非常有用。它只是显示了通过Internet从客户端到服务器的正向和反向代理设置的架构。此图将帮助您更好地理解qyb2zm302的答案和其他答案。

您还可以观看由Peter Silva制作的F5的DevCentral视频。

图片来源:Quora。然而,根据Martijn Pieters的说法,这张图片可能来自Pulse Secure Community或Julien Pauli的网站(法语)developez.com。

这让我想起了一句经典的谚语:

一张图片值1000个字。

其他回答

代理服务器(也称为正向代理)和反向代理服务器之间的区别取决于参考点。

从技术上讲,两者完全相同。两者都具有代表源向目的地传输数据的相同目的。

区别在于“代理服务器代表谁/代理服务器代表什么?”

如果代理服务器代表最终用户向互联网服务器转发请求(例如:大学中的学生通过大学代理服务器访问互联网),则代理称为“转发代理”或简称“代理”。

如果代理服务器代表服务器响应传入的请求,则该代理被称为“反向代理”,因为从最终用户的角度来看,它的工作方向相反。

反向代理的一些示例:

web服务器前面的负载平衡器充当代表实际web服务器的反向代理。API网关免费网站托管服务(如facebook页面/博客页面服务器)也是反向代理。实际内容可能在某个web服务器中,但外部世界通过反向代理发布的特定url知道它。

转发代理的使用:

监视来自组织的所有出站internet连接对internet浏览应用安全策略并阻止下载恶意内容阻止访问特定网站

使用反向代理:

显示网站的友好URL跨多个web服务器执行负载平衡应用安全策略并保护实际web服务器免受攻击

前面的大多数答案都是好的,但在我看来,没有一个答案能很好地解决区分两者的“反向”问题。要做到这一点,需要给出某种方式来可视化本质上相同的事物(代理)的“反向”性质,并且需要以一种很好的抽象方式来给出。

代理(隐式“转发代理”)将多个本地客户端连接到任意一个远程服务器:

c--
   |--p--s
c--

反向代理将多个本地服务器连接到任何一个远程客户端(请注意布局如何反向):

s--
   |--p--c
s--

这是一个角度问题,真正正确地理解这个概念需要抽象出非必要的(特定概念的)细节,尽管这些细节在涉及代理操作的语用学时可能非常重要。这些细节包括这样一个事实:在这两种场景中,现实是多个客户端连接到多个服务器,客户端和服务器可能不是真正的本地或远程,互联网云位于何处,或者客户端和服务器之间存在什么样的可见性。

一对简单的定义是:

转发代理:代表请求者(或服务使用者)

反向代理:代表服务/内容生产者行事。

从用户的角度看:向代理或反向代理服务器发送请求时:

proxy-需要两个参数:1)要获取什么,以及2)要使用哪个代理服务器反向代理-需要一个参数:1)获取什么

反向代理从用户不知道的另一个服务器获取内容,并返回结果,就像它来自反向代理服务器一样。

根据我的理解。。。

首先,众所周知,代理意味着“代表他人的权力”。现在有两件事,正向代理和反向代理。

转发代理服务器

假设您想访问“Google”,那么“Google”将有n个服务器来响应特定请求。

现在,在这种情况下,当您向Google请求某些内容,并且不希望Google看到您的IP地址时,您将使用转发代理,如下所述。

A.→ B→ C

现在你是A,通过B发送请求。所以C会认为请求来自B,而不是A。通过这种方式,你可以防止客户端的IP地址暴露在外部世界。

反向代理

现在,在这种情况下,为了让您理解,我们将采用转发代理的相同情况。在这里,你已经向谷歌请求了一些东西,然后谷歌会将一个请求发送到应用服务器或另一个代理服务器以获得响应。因此,这些事情将发生如下所述。

A.→ B→ C

C→ D

C← D

A.← B← C

从上图中,您可以看到一个请求已从B发送到C,而不是从a发送到C。然后从C将有一个请求发送到D。类似地,响应将从D发送到C然后发送到B和a。

上图表明,尽管两个代理的行为方式相同,但重要的只是上下文,但客户端代理隐藏客户端信息,而服务器端代理将隐藏服务器端信息。