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


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


1449
2017-10-22 06:27


起源


它的解释很好 Apache文档也是。 - Paolo
成功的@Paolo 许多 比维基百科的文章更容易理解。也许我应该最终将一些信息编辑到维基百科文章中...... - RastaJedi
假设我有主机A需要连接到主机C,但不直接。相反,它被配置为带有主机条目或可能是dns,以调用B将请求转发给C. C不关心或不知道B.这是转发代理还是反向代理? - Daniel Leach
如果主机A无法在未配置为首先联系主机B的情况下访问主机C,则主机B是传统的转发或“出站”代理服务器。 - TaylorMonacelli
转发代理授予客户匿名性(即想想Tor)。反向代理授予后端服务器匿名性(即,考虑DMZ后面的服务器)。 - 8bitjunkie


答案:


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

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

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

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

FORWARD代理

大多数关于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。看到 TOR 要么 自由网

    • b)管理员 Z 已经封锁了 X

      • 例子:

        • Z的管理员注意到来自X的黑客攻击尝试,因此管理员决定阻止X的IP地址(和/或netrange)。

        • Z是一个论坛网站。 X 是垃圾邮件论坛。 Z阻挡X.

REVERSE代理

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 认为他只与...沟通 Y (X --> Y),但现实是 Y 转发所有通信(X --> Y --> Z 再次)。

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

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

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

链接到帖子的主题:

内容分发网络

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

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

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

也可以看看:


2554
2017-08-10 14:35



TAM(tivoli访问管理器)也是一个反向代理服务器,对吧? - Clark Bao
怎么样open-proxy? - AminM
从概念上讲,我们可以将“反向代理”称为“强制”代理或将其视为“强制”代理? - Thomas
“这将把用户送到离他们最近的服务器” - 重点是什么?所有流量都将通过该代理服务器,对吧?因此,它背后的“本地”服务器的位置并不重要。或者我错过了什么? - Pavel
@Pavel可能是“最接近他们的服务器”并不是最好的描述。更像是“将负载分配到服务器池”是更好的描述。此示例描述了反向代理负载平衡器。 - JDS


一对简单的定义就是

远期代理:代表请求者(或服务使用者)代理

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


444
2017-08-31 04:55



这是一个很棒的答案,但我担心如果没有首先阅读最佳答案我就不会理解它:) - poshest
这完成了社区维基的答案。 - Akash Bisariya


我发现这个图非常有用。它只是展示了一个架构 forward VS reverse 通过Internet从客户端到服务器的代理设置。这张图片将帮助您理解qyb2zm302 岗位 和其他帖子更好。

Forward Proxy vs Reverse Proxy

你也可以看 这个 来自的视频 F5DevCentral 彼得席尔瓦

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

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

一张图片价值1000字。


258
2018-01-07 05:29



这真的是你需要关注的全部内容。在浏览器中设置代理,以便Netflix不知道您所在的国家/地区是转发代理商;指向传入请求的上游服务(可能您希望向两个服务器发送一个请求)是反向代理。 - Kyle Chadha
转发代理也可以在互联网上 - mac
最后一个答案中的最佳图片。谢谢。 :)反向代理也称为“负载均衡器”,作用于服务器端(将负载分配给不同的服务器),而正向代理支持客户端。 - codepleb
我认为这张照片值得1000张赞成票 - JBRWilkinson
太棒了。一个完美的例子,这张单张图片的价值远远超过最佳答案的1000多个字。 - Manachi


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

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

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

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

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

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

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

在我看来 前锋 和 相反 简直就是混淆,视角依赖的名字 客户 和 服务器 代理。我建议放弃前者用于后者,以便进行明确的沟通。

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


193
2018-01-17 16:14



这个答案符合 httpd.apache.org/docs/2.0/mod/mod_proxy.html#forwardreverse 并帮助解释清楚 - Greg Woods
似乎这个比较中最相关的特征是谁知道谁。转发代理:客户端知道代理(它实际配置它)和目标服务器(因为它向服务器的url发出请求),而在反向代理的情况下,客户端知道代理作为目标服务器(它不知道代理实际调用的是什么;它可以是一个服务器或更多服务器)。使用转发代理,服务器不知道客户端到底是谁,因为代理“转发”请求。转发代理:隐藏客户端。反向代理:隐藏服务器。 - Belun
这个答案很明显。爱它。谢谢。 - Phatee P


一些图可能有所帮助:

转发代理

Forward proxy

反向代理

Reverse proxy


122
2018-02-20 13:06



是吗?它们看起来一样!重写一个使代理成为“反向”代理的响应有什么特别之处? - 8bitjunkie
@ 8bitjunkie它的观点。请注意,对于转发代理,客户端知道它正在与代理服务器通信。对于反向代理,客户端认为它与home.com直接通信。代理也有不同的实现。反向代理可能非常愚蠢。它所要做的就是改变地址并传递呼叫。客户端上的网络逻辑更多,代理服务器更少。另一方面,转发代理需要以某种方式知道对proxy.com()的请求需要调用service.com。客户端上的网络逻辑较少,代理上更多。 - Kevin
是什么意思“翻译 myhome.myhosting.com到hom.com“我没有得到翻译部分。喜欢重写部分响应标题或什么? - 1252748
反向代理的原因之一(基于我从接受的答案中理解的)是这样做的目的是在多个服务器之间划分大量的传入流量。在这个链中哪里发生了这种情况?这是另一个“入境规则”吗? - 1252748
@ 1252748约1),翻译只是意味着映射URL并向适当的URL发出请求。约2),是的,你可以配置服务器,例如,使用循环来在服务器之间对请求进行负载均衡。 - Maria Ines Parnisari


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

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

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

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

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

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


65
2017-10-22 06:45



可以肯定的是,转发代理是客户端而反向代理是服务器端? - Yves
@yves。代理也是服务器。只是客户端需要本地配置才能进行通信。反向代理需要在服务器本身进行配置。他们的物理节点都在“服务器端”。 - whiteletters in blankpapers
仅供参考,不是 所有 代理可以作为正向和反向操作,例如,SOCKS可以,但不是HTTP代理。 - RastaJedi


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

enter image description here

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

enter image description here


49
2017-08-04 06:36



我觉得我可以向后复制和粘贴你的定义,但它们仍然是真的。我认为这不能解释任何关键差异或澄清反向代理的“反向”是什么? - 8bitjunkie
代理将始终代表某人(将其身份隐藏在另一方)。 “反向”是指反转其一侧是“隐藏”的,它是第一种情况下的客户端(常规代理)和第二种情况下的服务器(反向代理)。实际上,这些术语可以互换使用,只是通过选择第一个案例作为常规代理(可能是出于历史原因)的惯例问题。希望这是有道理的。 - Dimos


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


35
2017-07-16 08:54





最好的解释 这里 用图表:

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

实际上,而a 转发代理 隐藏客户的身份,a 反向代理 隐藏服务器的身份


32
2018-04-09 22:00





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

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

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

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


22
2017-10-01 03:08