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

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

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

首先,“代理人”这个词描述某人或某人代表别人行事。

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

为了便于访问,我将讨论限制在web代理上 – 但是,代理的概念不限于网站。

FORWARD代理

networking代理的大部分讨论都是指被称为“正向代理”的代理types。

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

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

举个例子,我会列出连接到互联网的三台电脑。

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

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

但在某些情况下, Y --> Z代表X ,最好是X --> Y --> Z

X想要使用转发代理服务器的原因:

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

  • 1)X无法直接访问Z,因为

    • a)具有X的互联网连接pipe理权限的人已决定阻止对站点Z所有访问。

      • 例子:

        • 风云蠕虫病毒通过诱骗人们访问familypostcards2008.com传播,所以系统pipe理员已经阻止访问该网站,以防止用户无意中感染自己。

        • 一家大公司的员工在facebook.com上浪费了太多时间,所以pipe理层希望在工作时间内阻止访问。

        • 当地一所小学不允许通过networking访问playboy.com网站。

        • 政府无法控制新闻的发布,所以它通过屏蔽诸如wikipedia.org网站来控制对新闻的访问。 请参阅TOR或FreeNet 。

    • b) Z的pipe理员阻止了X

      • 例子:

        • Z的pipe理员已经注意到来自X的黑客攻击,所以pipe理员决定阻止X的IP地址(和/或netrange)。

        • Z是一个论坛网站。 X正在垃圾邮件论坛。 Z块X.

REVERSE代理

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

在这个例子中,我将列出连接到互联网的三台电脑。

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

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

但在某些情况下, Z的pipe理员限制或不允许直接访问,强制访问者先通过Y. 所以,和以前一样,我们有代表XY --> Z检索数据,其链接如下: X --> Y --> Z

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

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

Z想要build立一个反向代理服务器的原因:

  • 1)Z想要强制所有的stream量通过Y先通过它的网站。
    • a)Z拥有一个数以百万计的人希望看到的大型网站,但是一个networking服务器无法处理所有的stream量。 因此,Z设置了许多服务器,并在互联网上放置了一个反向代理服务器,当用户尝试访问Z时,它将把用户发送到离他们最近的服务器。这是内容分发networking(CDN)概念的一部分。
      • 例子:
        • Apple Trailers使用Akamai
        • Jquery.com使用CloudFront CDN ( 示例 )托pipe其JavaScript文件。
        • 等等
  • 2)Z的pipe理员担心服务器上托pipe的内容受到报复,不希望将主服务器直接暴露给公众。
    • a)像“加拿大药房”这样的垃圾邮件品牌的拥有者似乎拥有数千台服务器,而实际上大多数网站的服务器却less得多。 另外,垃圾邮件的滥用投诉只会closures公共服务器,而不是主服务器。

在上面的场景中, Z有能力selectY

从post链接到主题:

内容传送networking

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

  • CGI代理
  • phproxy (已停产)
  • glype
  • 互联网审查维基:networking代理列表
  • 鱿鱼 (显然,也可以作为一个反向代理)

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

  • apache mod_proxy (也可以作为HTTP的转发代理)
  • nginx (用于hulu.com,垃圾网站等)
  • HAProxy的
  • lighthttpd
  • perlbal (为livejournal写)
  • portfusion
  • 清漆caching (由freebsd内核专家编写)
  • rest

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

  • 平衡
  • 代表
  • 钢笔
  • portfusion
  • 纯粹的负载平衡器 (网站不存在)
  • python导演

也可以看看:

  • 内容交付networking
  • 维基百科 – 分类:Reverse_proxy
  • 维基百科 – 负载平衡
  • 维基百科 – 可扩展性

一对简单的定义是

正向代理:代表请求者(或服务使用者)

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

qyb2zm302的回答很好地详细介绍了代理服务器的应用,但却忽略了正向代理和反向代理之间的基本概念。 对于反向代理,X – > Y – > Z,X知道Y而不是Z,反之亦然。

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

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

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

    代理人代表客户行事。 客户知道所有涉及连锁的3台机器。 服务器没有。

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

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

在我看来, 正向反向只是令人困惑的,依赖于视angular的客户端服务器代理名称。 我build议放弃前者,以明确沟通。

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

我发现这个图很有帮助。 它只是显示了从我的电脑到互联网的forwardreverse代理设置的体系结构。 这个图像将帮助你更好地理解qyb2zm302的文章和其他文章。

转发代理与反向代理

来源: Quora 。 所有的信用给创build这个图的人。

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

一张图片胜过1000字。

有些图表可能有帮助:

正向代理

正向代理

反向代理

反向代理

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

全function的服务器通常具有访问控制,caching和一些链接映射function。

转发代理是通过configuration客户机访问的代理。 客户端需要协议支持代理function(redirect,代理authentication等)。 代理对用户体验透明,但对应用程序不透明。

反向代理是一种作为Web服务器部署的代理,其行为像Web服务器,不同之处在于,它不是从程序和磁盘本地组成内容,而是将请求转发到源服务器。 从客户的angular度来看,它是一个Web服务器,所以用户体验是完全透明的。

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

这是简短的版本,我可以澄清,如果人们想评论。

代理服务器代理(并且可选地高速caching)传出networking请求到互联网上的各种不一定相关的公共资源。 反向代理捕获(并可选地高速caching)来自Internet的传入请求,并将其分发到各种内部专用资源(通常用于HA目的)。

代理服务器:代表客户端发出请求 。 所以,服务器会将响应返回给代理,代理将把响应转发给客户端。 事实上,服务器永远不会“知道”客户是谁(客户的IP),它只会知道代理。 但是,客户端肯定知道服务器,因为它本质上是指向服务器的HTTP请求的格式,但它只是把它交给代理服务器。

在这里输入图像描述

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

在这里输入图像描述

这里最好的解释与图表:

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

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

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

相反,反向代理(或网关)就像普通的Web服务器一样,出现在客户端上。 客户端上没有特别的configuration是必要的。 客户端对反向代理的名称空间中的内容进行普通的请求。 然后,反向代理决定发送这些请求的位置,并返回内容,就好像它本身就是原点一样。

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

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

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

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

根据我的理解……….

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

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

现在,在这种情况下,当你要求从谷歌的东西,你不希望谷歌看到你的IP地址,那么你将使用正向代理,如下所述。

甲—–>乙—–>Ç

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

反向代理。 现在在这种情况下,为了让你明白我们将采取同样的转发代理案例。 在这里,你已经要求谷歌的东西,反过来要发送一个请求到应用程序服务器或其他代理服务器来获得响应。 所以这些事情将会在下面解释。

甲—–>乙—–>Ç

  C------>D C<------D 

A <—– B <—– C从上面的图可以看出,一个请求已经从B发送到C而不是从A.然后从C发送一个请求到D.同样的答案将从D到C再到B和A.

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

如果你觉得上面的解释是错误的,请发表评论。

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

一个客户访问website.com,它所访问的服务器上运行着一个反向代理。 反向代理恰好是磅 。 Pound接受请求并将其发送到位于其后的三个应用程序服务器之一。 在这个例子中,磅是一个负载平衡器。 即。 这是三个应用程序服务器之间的平衡负载 应用程序服务器将网站内容提供给客户端。

尽pipe我从apache的angular度来理解,代理意味着如果站点x代表站点y,那么请求x返回y。

反向代理意味着来自y的响应被调整,使得对y的所有引用变成x。

所以,用户不能告诉代理涉及…

代理服务器(正向代理服务器):当您的局域网中的计算机连接到访问互联网的代理服务器时。 好处包括,只有服务器暴露在互联网上。 外面的人不能直接访问电脑。 正向代理可以通过caching下载来改善用户的互联网访问。 他们也可以用来限制访问某些网站。 而且,只有代理服务器需要一个公共地址,而不是连接到它的客户端。

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

在这里输入图像描述 图片来源: docs.microsoft.com

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

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