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

问题描述 投票:1650回答:21

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

proxy webserver terminology reverse-proxy
21个回答
2840
投票

以前的答案是准确的,但也许太简洁了。我会尝试添加一些例子。

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

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

出于可访问性的目的,我将讨论限制在Web代理中 - 但是,代理的概念不仅限于网站。

FORWARD proxy

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

在这种情况下,代理事件是“转发代理”代表原始被请求者从另一个网站检索数据。

3台电脑的故事(第一部分)

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

  • X =您的计算机或互联网上的“客户端”计算机
  • Y =代理网站proxy.example.org
  • Z =您要访问的网站www.example.net

通常,人们可以直接从X --> Z.连接

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

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

这是转发代理服务器的(非常)部分使用列表。

  • 1)X无法直接访问Z,因为 a)对X的互联网连接具有管理权限的人决定阻止所有访问网站Z。 例子: Storm蠕虫病毒通过欺骗人们访问familypostcards2008.com而蔓延,因此系统管理员已阻止访问该网站以防止用户无意中感染自己。 一家大公司的员工在facebook.com上浪费了太多时间,因此管理层希望在工作时间禁止访问。 当地一所小学不允许访问playboy.com网站。 政府无法控制新闻的发布,因此它通过阻止wikipedia.org这样的网站来控制对新闻的访问。见TORFreeNet。 b)Z的管理员阻止了X。 例子: Z的管理员注意到来自X的黑客攻击尝试,因此管理员决定阻止X的IP地址(和/或netrange)。 Z是一个论坛网站。 X正在向论坛发送垃圾邮件。 Z阻挡X.

REVERSE proxy

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

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

  • X =您的计算机或互联网上的“客户端”计算机
  • Y =反向代理网站proxy.example.com
  • Z =您要访问的网站www.example.net

通常,人们可以直接从X --> Z.连接

但是,在某些情况下,Z的管理员最好限制或禁止直接访问并强制访问者首先通过Y.因此,和以前一样,我们有Y --> Z代表X检索数据,其链接如下:X --> Y --> Z

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

客户X认为他只与YX --> Y)沟通,但现实是Y转发所有通信(再次X --> Y --> Z)。

Z想要设置反向代理服务器的原因:

  • 1)Z希望强制所有流量到其网站首先通过Y. a)Z有一个庞大的网站,数百万人希望看到,但单个网络服务器无法处理所有流量。因此,Z设置了许多服务器并在互联网上放置了一个反向代理,当用户尝试访问Z时,会将用户发送到最靠近他们的服务器。这是内容分发网络(CDN)概念如何工作的一部分。 例子: Apple Trailers使用Akamai Jquery.com使用CloudFront CDNsample)托管其javascript文件。 等等
  • 2)Z的管理员担心对服务器上托管的内容进行报复,并且不希望将主服务器直接暴露给公众。 a)“加拿大药房”等垃圾邮件品牌的所有者似乎拥有数千台服务器,而实际上大多数网站托管的服务器数量要少得多。此外,有关垃圾邮件的滥用投诉只会关闭公共服务器,而不是主服务器。

在上述场景中,Z有能力选择Y

Links to topics from the post:

内容分发网络

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

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

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

也可以看看:


27
投票

Cloudflare有一篇很棒的文章,图片详细解释了这一点。

点击这里:https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/

enter image description here


enter image description here


25
投票

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

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

enter image description here图像源:docs.microsoft.com


23
投票

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

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

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

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


19
投票

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

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


10
投票

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

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

这样用户就无法判断是否涉及代理...


10
投票

按照我的理解..........

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

FORWARD PROXY假设你想要访问“谷歌”和“谷歌”反过来将有n个服务器来响应该特定请求。

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

甲----->乙----->Ç

现在你在A通过B发送请求,所以C会认为请求来自B,而不是A.这样你就可以防止你的客户IP不暴露在外面。

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

甲----->乙----->Ç

          C------>D

          C<------D

A <----- B <----- C从上图可以看出,请求已从B发送到C,而不是从A.然后从C发送一个请求发送到D.同样,响应将从D转到C然后转到B和A.

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

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


10
投票

前向代理授予客户匿名性(即想想Tor)。

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


9
投票

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

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


5
投票

正向代理服务用户:帮助用户访问服务器。

反向代理服务器服务器:保护服务器免受用户侵害


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

509
投票

一对简单的定义就是

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

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


2
投票

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

  • 代理 - 需要两个参数: 1)获取什么以及2)使用中间件的代理服务器
  • 反向代理 - 需要一个参数: 1.)得到什么 反向代理从用户不知情的另一个服务器获取内容,并返回结果,就像它来自反向代理服务器一样

1
投票

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

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

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

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

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

这是一个透视问题,真正正确地理解这个概念需要抽象掉非必要的(特定概念)细节,尽管它们在代理操作的语用学方面可能非常重要。这些细节包括以下事实:在两种情况下,现实情况是多个客户端连接到多个服务器,客户端和服务器可能实际上不是本地或远程的,因为Internet云位于其中,或者客户端和服务器之间存在何种可见性。


348
投票

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

Forward Proxy vs Reverse Proxy

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

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

它让我想起了经典的谚语:

一张图片价值1000字。


205
投票

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

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

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

  • 客户端代理:(客户端< - >代理)< - >服务器 代理代表客户行事。客户了解链中涉及的所有3台机器。服务器没有。
  • 服务器代理:客户端< - >(代理< - >服务器) 代理代表服务器行事。客户只知道代理。服务器知道整个链。

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

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


126
投票

一些图可能有所帮助:

转发代理

反向代理


70
投票

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

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

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

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

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

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


58
投票

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

enter image description here

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

enter image description here


39
投票

最好的解释here与图表:

当代理客户端(或请求主机)的转发代理代理时,代表服务器的反向代理代理

实际上,虽然转发代理隐藏了客户端的身份,但反向代理隐藏了服务器的身份


38
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.