代理服务器和反向代理服务器之间的区别是什么?
当前回答
Cloudflare有一篇很棒的文章,其中有详细解释这一点的图片。检查此处:什么是反向代理?|代理服务器说明
其他回答
根据我的理解。。。
首先,众所周知,代理意味着“代表他人的权力”。现在有两件事,正向代理和反向代理。
转发代理服务器
假设您想访问“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。
上图表明,尽管两个代理的行为方式相同,但重要的只是上下文,但客户端代理隐藏客户端信息,而服务器端代理将隐藏服务器端信息。
之前的回答是准确的,但可能过于简洁。我将尝试添加一些示例。
首先,“代理”一词描述的是代表他人行事的某人或某物。
在计算机领域,我们谈论的是一台服务器代表另一台计算机。
出于可访问性的目的,我将把我的讨论局限于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-负载平衡维基百科-可扩展性
正向代理与反向代理(2012)非常清楚地解释了正向代理和反向代理之间的区别。
qyb2zm302的答案很好地详细描述了代理的应用,但它忽略了正向代理和反向代理之间的基本概念。对于反向代理,X→ Y→ Z、 X知道Y而不是Z,反之亦然。
代理只是通信(请求+响应)的中间人。客户端<->代理<->服务器
客户端代理:(客户端<->代理)<->服务器
代理人代表客户行事。客户知道链中涉及的所有三台机器。服务器没有。
服务器代理:客户端<->(代理<->服务器)
代理代表服务器行事。客户端只知道代理。服务器知道整个链条。
在我看来,正向和反向只是客户端和服务器代理的混淆、依赖于透视的名称。我建议放弃前者,改用后者,进行明确的沟通。
当然,让事情更复杂的是,并不是每台机器都是客户端或服务器。如果上下文中存在歧义,最好明确指定代理所在的位置以及它通过隧道传输的通信。
一些图表可能会有所帮助:
转发代理服务器
反向代理
最好的解释是这里的图表:
当正向代理代表客户端(或请求主机)时,反向代理代表服务器。
实际上,正向代理隐藏客户端的身份,反向代理隐藏服务器的身份。