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


当前回答

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

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

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

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

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

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

其他回答

转发代理授予客户端匿名性(即,思考Tor)。

反向代理授予后端服务器匿名性(即,认为DMZ后面的服务器)。

之前的回答是准确的,但可能过于简洁。我将尝试添加一些示例。

首先,“代理”一词描述的是代表他人行事的某人或某物。

在计算机领域,我们谈论的是一台服务器代表另一台计算机。

出于可访问性的目的,我将把我的讨论局限于web代理——然而,代理的概念并不局限于网站。

FORWARD代理

大多数关于web代理的讨论都是指被称为“转发代理”的代理类型

在本例中,代理事件是“转发代理”代表原始请求者从另一个网站检索数据。

三台电脑的故事(上)

例如,我将列出三台连接到互联网的计算机。

X=您的计算机或internet上的“客户端”计算机Y=代理网站proxy.example.orgZ=您要访问的网站,www.example.net

通常,可以直接从X-->Z连接。

然而,在某些情况下,Y-->Z代表X更好,其链如下:X->Y->Z。

X希望使用转发代理服务器的原因:

以下是转发代理服务器的部分使用列表:

1) X无法直接访问Z因为a) 对X的互联网连接具有管理权限的人已决定阻止对Z站点的所有访问。示例:风暴蠕虫病毒通过诱骗人们访问familypostcards2008.com而传播,因此系统管理员已阻止访问该网站,以防止用户无意中感染自己。一家大公司的员工在facebook.com上浪费了太多时间,因此管理层希望在工作时间访问被屏蔽。当地一所小学禁止访问playy.com网站。政府无法控制新闻的发布,因此它通过封锁维基百科等网站来控制新闻的访问。参见TOR或FreeNet。b) Z的管理员已阻止X。示例:Z的管理员注意到来自X的黑客企图,因此管理员决定阻止X的IP地址(和/或网络范围)。Z是一个论坛网站。X正在向论坛发送垃圾邮件。Z块X。

REVERSE代理

三台电脑的故事(第二部分)

在本例中,我将列出三台连接到internet的计算机。

X=您的计算机或internet上的“客户端”计算机Y=反向代理网站proxy.example.comZ=您要访问的网站,www.example.net

通常,可以直接从X-->Z连接。

然而,在某些情况下,Z的管理员最好限制或禁止直接访问,并强制访问者首先通过Y。因此,正如前面所述,数据由Y-->Z代表X检索,其链如下:X-->Y-->Z。

这次与“转发代理”不同的是,这次用户X不知道他正在访问Z,因为用户X只看到他正在与Y通信。服务器Z对客户端不可见,只有反向代理Y在外部可见。反向代理在客户端不需要(代理)配置。

客户机X认为他只与Y(X-->Y)通信,但事实是Y转发所有通信(X-->Y-->Z)。

Z希望设置反向代理服务器的原因:

1) Z希望强制其网站的所有流量首先通过Y。a) Z有一个数百万人都想看到的大型网站,但一个web服务器无法处理所有流量。因此,Z建立了许多服务器,并在互联网上放置了一个反向代理,当用户试图访问Z时,该代理会将用户发送到离他们最近的服务器。这是内容分发网络(CDN)概念工作原理的一部分。示例:Apple Trailers使用AkamaiJquery.com使用CloudFront CDN托管其JavaScript文件(示例)。等2) Z的管理员担心服务器上托管的内容遭到报复,不想直接向公众公开主服务器。a) “加拿大药房”等垃圾邮件品牌的所有者似乎拥有数千台服务器,而实际上,大多数网站的服务器数量要少得多。此外,有关垃圾邮件的滥用投诉只会关闭公共服务器,而不会关闭主服务器。

在上述场景中,Z可以选择Y。

文章主题链接:

内容交付网络

CDN列表http://www.mytestbox.com/miscellaneous/content-delivery-networks-cdn-list/http://blog.streamingmedia.com/the_business_of_online_vi/2008/01/updated-list-of.html

转发代理软件(服务器端)

PHP代理cgi代理phproxy(已停产)glype型互联网审查wiki:Web代理列表squid(显然,也可以作为反向代理)

HTTP反向代理软件(服务器端)

Apache mod_proxy(也可以作为HTTP的转发代理)nginx(用于hulu.com、垃圾网站等)HAProxy公司Caddy Web服务器轻httpdperlbal(为livejournal撰写)端口融合英镑清漆缓存(由FreeBSD内核专家编写)休息

TCP反向代理软件(服务器端)

均衡代表笔端口融合纯负载平衡器(网站失效)python控制器

另请参见:

维基百科-内容交付网络维基百科-类别:Reverse_proxyWikipedia-负载平衡维基百科-可扩展性

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

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

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

我从Apache的角度理解,代理意味着如果站点x代理站点y,那么请求x返回y。

反向代理意味着对y的响应进行调整,以便所有对y的引用都变为x。

因此,用户无法判断是否涉及代理。。。

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

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

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

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

一张图片值1000个字。