代理服务器和反向代理服务器之间的区别

时间:2008-10-22 06:27:33

标签: proxy webserver terminology reverse-proxy

代理服务器和反向代理服务器有什么区别?

23 个答案:

答案 0 :(得分:2817)

答案 1 :(得分:504)

一对简单的定义是

转发代理:代表请求者(或服务消费者)代理

反向代理:代表服务/内容制作人代理。

答案 2 :(得分:341)

我发现这个图非常有用。它仅显示了通过Internet从客户端到服务器的forward vs reverse代理设置的体系结构。此图片将帮助您更好地理解qyb2zm302的post和其他帖子。

Forward Proxy vs Reverse Proxy

您还可以通过Peter Silva的F5 DevCentral观看this视频。

图片来源:Quora。创建此图表的人员的所有信用。

它让我想起了经典谚语:

  

一张图片价值1000字。

答案 3 :(得分:205)

qyb2zm302的答案很好地详细说明了代理的应用程序,但在正向和反向代理之间的基本概念上滑倒了。对于反向代理,X - > Y - > Z,X知道Y而不是Z,而不是反过来。

http://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy非常清楚地解释了正向和反向代理之间的区别。

代理只是沟通的中间人(请求+响应)。客户< - >代理< - >服务器

  • 客户代理:客户< - >代理< - >服务器

    代理代表客户行事。客户知道所有3 涉及链条的机器。服务器没有。

  • 服务器代理:客户端< - > 代理< - >服务器

    代理代表服务器行事。客户只知道代理。服务器知道整个链。

对我来说,转发反向只是令人困惑的,与客户端服务器的视角相关的名称代理。我建议放弃前者用于后者,以便进行明确的沟通。

当然,为了使问题进一步复杂化,并非每台机器都只是客户端或服务器。如果上下文中存在歧义,最好明确指定代理所在的位置以及它所通信的通信。

答案 4 :(得分:125)

某些图表可能有所帮助:

转发代理

Forward proxy

反向代理

Reverse proxy

答案 5 :(得分:70)

差异主要在于部署。 Web转发和反向代理都具有相同的底层功能,它们接受各种格式的HTTP请求请求,并通常通过访问源或联系服务器来提供响应。

功能齐全的服务器通常具有访问控制,缓存和一些链接映射功能。

转发代理是通过配置客户端计算机访问的代理。客户端需要协议支持代理功能(重定向,代理身份验证等)。代理对用户体验是透明的,但对应用程序则不透明。

反向代理是一种部署为Web服务器的代理,其行为类似于Web服务器,但不是在本地编写来自程序和磁盘的内容,而是将请求转发到源服务器。从客户端的角度来看,它是一个Web服务器,因此用户体验是完全透明的。

事实上,对于不同的客户群,单个代理实例可以同时作为正向和反向代理运行。

这是简短版本,我可以澄清人们是否想发表评论。

答案 6 :(得分:56)

代理:它代表客户提出请求。因此,服务器将响应返回给代理,代理将响应转发给客户端。事实上,服务器永远不会“学习”客户端是谁(客户端的IP),它只会知道代理。但是,客户端肯定知道服务器,因为它基本上格式化了发往服务器的HTTP请求,但它只是将它交给代理。

enter image description here

反向代理:它代表服务器接收请求。它将请求转发给服务器,接收响应,然后将响应返回给客户端。在这种情况下,客户端永远不会“学习”谁是实际的服务器(服务器的IP)(有一些例外),它只会知道代理。服务器将会或不会知道实际的客户端,具体取决于反向代理的配置。

enter image description here

答案 7 :(得分:39)

带图表的最佳解释here

代表客户或请求主机 转发代理 代理,代表服务器反向代理 代理

实际上,当 转发代理 隐藏客户端的身份时, 反向代理 会隐藏身份服务器

答案 8 :(得分:38)

代理服务器将传出的网络请求代理(并且可选地缓存)到因特网上的各种不一定相关的公共资源。反向代理捕获(并可选地缓存)来自Internet的传入请求,并将它们分发到各种内部私有资源,通常用于高可用性目的。

答案 9 :(得分:25)

代理(转发代理): 当LAN上的计算机连接到访问Internet的代理服务器时。好处包括,只有服务器暴露在互联网上。外面的人无法直接访问计算机。 转发代理可以通过缓存下载来改善用户的互联网访问。它们还可用于限制对某些站点的访问。此外,只有代理服务器需要公共地址,而不是连接到它的客户端。

反向代理: 反向代理与正向代理相反。相反,它代表连接的服务器充当代理。用户不是直接访问远程服务器,而是通过反向代理并定向​​到相应的代理 服务器从那里。只有反向代理才需要SSL证书,只需要一个公共IP地址,它可以处理传入请求的负载平衡,以增强整体用户体验。

enter image description here 图片来源:docs.microsoft.com

答案 10 :(得分:24)

  

Cloudflare上有一篇很棒的文章,其中包含图像,对此进行了详细说明。

     

在这里检查:   https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/

enter image description here


enter image description here

答案 11 :(得分:23)

普通的 转发代理 是位于客户端和源服务器之间的中间服务器。为了从源服务器获取内容,客户端向代理命名原始服务器的代理发送请求作为目标,然后代理从源服务器请求内容并将其返回给客户端。 客户端必须经过专门配置才能使用转发代理来访问其他网站。

相比之下, 反向代理(或网关) 对客户端来说就像普通的Web服务器一样。客户端无需特殊配置。客户端在反向代理的名称空间中对内容进行普通请求。然后,反向代理决定将这些请求发送到何处,并返回内容,就好像它本身就是源。

反向代理的典型用法是为Internet用户提供对防火墙后面的服务器的访问。反向代理也可用于平衡多个后端服务器之间的负载,或者为较慢的后端服务器提供缓存。此外,反向代理可以简单地用于将多个服务器引入相同的URL空间。

了解更多信息,请访问:Apache Docs

答案 12 :(得分:19)

这是一个很好的阅读,以了解正向和反向PROXY之间的差异 http://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy

转发代理隐藏客户端(用户)的身份,而反向代理隐藏服务器的身份。

答案 13 :(得分:10)

根据我的理解..........

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

FORWARD PROXY 假设您想要访问“google”,而“google”依次会有n个服务器来响应该特定请求。

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

一个----->乙-----&以及c

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

反对代理。 现在在这种情况下,为了让您了解我们将采用相同的转发代理案例。在这里,您已经请求了google的内容,而这些内容又会将一个请求发送到应用服务器或其他代理服务器以获取响应。所以这些事情将如下所述发生。

一个----->乙-----&以及c

          C------>D

          C<------D

A&LT; ----- B&LT; -----Ç 从上图您可以看到请求已从B发送到C而不是从A.然后从C发送一个请求发送给D.同样,响应将从D转到C然后转到B和A. / p>

上图显示了它唯一的上下文,尽管两个代理的行为方式相同但客户端代理隐藏了客户端信息,而服务器端代理将隐藏服务器端信息。

如果您认为上述说明有误,请发表评论。

答案 14 :(得分:10)

虽然从apache的角度来看我的理解是代理意味着如果站点x代理站点y,那么请求x返回y。

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

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

答案 15 :(得分:10)

转发代理授予客户匿名性(即想想Tor)。

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

答案 16 :(得分:9)

以下是反向代理的示例(作为负载均衡器)。

客户浏览到website.com,它点击的服务器上运行了反向代理。反向代理恰好是pound。 Pound接收请求并将其发送到位于其后面的三个应用程序服务器之一。在这个例子中,Pound是一个负载均衡器。即。它正在平衡三个应用服务器之间的负载。 应用程序服务器将网站内容提供给客户端。

答案 17 :(得分:4)

如果没有代理 to see from client side and server side are the same: Client -> Server 代理 from client side: Client -> proxy -> Server from Server side: Client -> Server 反向代理 from client side: Client -> Server from Server side: Client -> proxy -> Server

所以我认为如果它是由客户端用户设置的,则称为代理;如果它由服务器管理器设置,则它是反向代理。

由于设置的目的和原因不同,它们以不同的方式处理数据并使用不同的软件。

   User side          |      Server side
client  <->  proxy  <-->  reverse_proxy <-> real server

答案 18 :(得分:4)

转发代理用户提供服务:帮助用户访问服务器

反向代理服务器服务器提供服务:保护服务器不受用户的干扰。

答案 19 :(得分:1)

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

  • 代理-需要两个参数

    1)获取什么和2)哪个代理服务器使用中间< br />

  • 反向代理-需要一个参数

    1.)得到什么

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

答案 20 :(得分:1)

以上大多数答案都是好的,但我认为没有一个解决方案能够很好地解决区分两者的“反向”质量。为此,需要以某种方式可视化本质上相同的事物(代理)的“反向”本质,并且必须以一种抽象的方式给出它。

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

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

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

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

真正正确地理解这个概念需要抽象一些非必要的细节(对于特定的概念),尽管对于代理操作的实用性它们可能非常重要。这样的细节包括以下事实:在两种情况下,现实都是多个客户端连接到多个服务器,客户端和服务器可能不是真正的本地或远程,Internet云所在的位置或客户端和服务器之间存在哪种可见性。 / p>

答案 21 :(得分:0)

让我们考虑一下服务的目的。

在转发代理中:

代理可帮助用户访问服务器。

在反向代理中:

代理有助于服务器被用户访问。

在后一种情况下,受代理帮助的不再是用户,而是服务器,这就是我们称其为反向代理的原因。

答案 22 :(得分:0)

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

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

区别在于'代理服务器代表谁/代理服务器代表谁?'

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

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

反向代理的一些示例:

  1. Web服务器前的负载平衡器代表实际的Web服务器充当反向代理。
  2. API网关
  3. 免费的网站托管服务,例如(facebook页面/博客页面服务器),也是反向代理。实际的内容可能在某些Web服务器中,但是外界通过反向代理广告的特定URL知道了它。

使用转发代理:

  1. 监视组织中的所有出站互联网连接
  2. 将安全策略应用于Internet浏览并阻止恶意内容下载
  3. 阻止访问特定网站

使用反向代理:

  1. 为网站提供友好的网址
  2. 在多个Web服务器之间执行负载平衡
  3. 应用安全策略并保护实际的Web服务器免受攻击