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

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

答案

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

首先,“代理” 一词是指某人或某物代表他人行事。

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

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

转发代理

Web 代理的大多数讨论都涉及代理的类型,称为 “转发代理”。

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

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

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

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

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

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

X 为什么要使用转发代理服务器的原因:

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

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

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

      • 例子:

        • 风暴蠕虫病毒通过诱使人们访问familypostcards2008.com传播,因此系统管理员已阻止对该站点的访问,以防止用户无意中感染自己。

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

        • 当地的一所小学不允许访问playboy.com网站的互联网。

        • 政府无法控制新闻的发布,因此它通过阻止wikipedia.org等网站来控制新闻的访问。参见TORFreeNet

    • b) Z的管理员已阻止X

      • 例子:

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

        • Z 是论坛网站。 X正在向论坛发送垃圾邮件。 Z 块 X。

反向代理

3 台计算机的故事(第二部分)

对于此示例,我将列出连接到 Internet 的三台计算机。

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

通常,可以直接从X --> Z.连接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)概念工作方式的一部分。
  • 2)Z 的管理员担心对服务器上托管的内容进行报复,并且不希望直接向公众公开主服务器。
    • a)“加拿大药房” 等垃圾邮件品牌的所有者似乎拥有数千台服务器,而实际上大多数网站托管的服务器要少得多。此外,对垃圾邮件的滥用投诉只会关闭公共服务器,而不会关闭主服务器。

在上述情况下, Z可以选择Y

链接到帖子中的主题:

内容传递网络

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

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

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

也可以看看:

一对简单的定义是:

转发代理:代表请求者(或服务使用者)代理

反向代理:代表服务 / 内容生产者。

我发现下面的图表非常有帮助。它仅显示了通过 Internet 从客户端到服务器的正向反向代理设置的体系结构。此图像将帮助您更好地了解qyb2zm302 的答案和其他答案。

正向代理与反向代理

您还可以从 Peter Silva 的F5DevCentral观看此视频

图片来源: Quora 。但是,根据Martijn Pieters 的说法 ,该图像可能来自Pulse Secure 社区或 Julien Pauli 的位于 developpez.com 的网站 (法语)。

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

一幅图片值一千字。

正向代理与反向代理 (2012)非常清楚地解释了正向和反向代理之间的区别。

qyb2zm302 的答案很好地详细说明了代理的应用,但它忽略了正向和反向代理之间的基本概念。对于反向代理,X→Y→Z,X 知道 Y 而不是 Z,而不是 Z。

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

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

代理代表客户行事。客户知道该链中涉及的所有三台机器。服务器没有。

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

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

在我看来, 正向反向仅仅是客户机服务器代理的令人困惑的,与透视图相关的名称。我建议为后者而放弃前者,以便进行明确的沟通。

当然,使问题更复杂的是,并非每台机器都专门是客户端或服务器。如果上下文中存在歧义,则最好明确指定代理位于何处以及通过隧道传输的通信。

一些图表可能会有所帮助:

转发代理

转发代理

反向代理

反向代理

区别主要在于部署。 Web 正反代理都具有相同的基本功能。它们通常以访问原始服务器或联系服务器的方式接受各种格式的 HTTP 请求并提供响应。

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

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

反向代理是部署为 Web 服务器并表现得像 Web 服务器的代理,不同之处在于,它不是将程序和磁盘中的内容本地组成,而是将请求转发到原始服务器。从客户端的角度来看,它一个 Web 服务器,因此用户体验是完全透明的。

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

代理:它代表客户端发出请求 。因此,服务器将响应返回给代理,并且代理会将响应转发给客户端。实际上,服务器永远不会 “了解” 客户端的用户身份(客户端的 IP 地址)。它只会知道代理。但是,客户端肯定知道服务器,因为它实质上格式化了发往服务器的 HTTP 请求,但只是将其交给代理。

在此处输入图片说明

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

在此处输入图片说明

最好的解释在这里与图表:

正向代理代表客户端或请求主机 代理 ,而反向代理代表服务器。

实际上, 前向代理隐藏了客户端的身份,而反向代理则隐藏了服务器的身份。

代理服务器通过 Internet 代理(并可选地缓存)对各种不必要的公共资源的传出网络请求。反向代理捕获(并可选地缓存)来自 Internet 的传入请求,并将它们分配给各种内部专用资源,通常是出于高可用性的目的。

Cloudflare 上有一篇很棒的文章,其中包含详细解释图像的图像。

在这里检查: 什么是反向代理? | 代理服务器介绍

在此处输入图片说明


在此处输入图片说明