关闭。此问题不符合 Stack Overflow 准则。它目前不接受答案。我们不允许在 Stack Overflow 上提出有关专业服务器或网络相关基础设施管理的问题。您可以编辑问题,使其成为 Stack Overflow 的主题。 1年前关闭。改进这个问题
代理服务器和反向代理服务器有什么区别?
之前的答案是准确的,但可能过于简洁。我将尝试添加一些示例。
首先,“代理”一词描述了代表他人行事的某人或某事。
在计算机领域,我们谈论的是一个服务器代表另一台计算机。
出于可访问性的目的,我将把我的讨论限制在网络代理上——但是,代理的想法并不局限于网站。
转发代理
大多数关于 Web 代理的讨论都是指称为“转发代理”的代理类型。
在这种情况下,代理事件是“转发代理”代表原始请求者从另一个网站检索数据。
3 台计算机的故事(上)
例如,我将列出三台连接到 Internet 的计算机。
X = 您的计算机,或 Internet 上的“客户端”计算机
= 代理网站 proxy.example.org
Z = 您要访问的网站,www.example.net
通常,可以直接从 X --> Z.
连接
但是,在某些情况下,最好由 Y --> Z
代表 X
,其链接如下:X --> Y --> Z
。
X 想要使用转发代理服务器的原因:
这是转发代理服务器的(非常)部分用途列表:
1) X 无法直接访问 Z,因为 a) 对 X 的 Internet 连接具有管理权限的人已决定阻止对站点 Z 的所有访问。示例:Storm Worm 病毒通过诱骗人们访问 familypostcards2008.com 进行传播,因此系统管理员已阻止对该站点的访问,以防止用户无意中感染自己。一家大公司的员工在 facebook.com 上浪费了太多时间,因此管理层希望在工作时间阻止访问。当地一所小学禁止访问 playboy.com 网站。政府无法控制新闻的发布,因此它通过封锁 wikipedia.org 等网站来控制对新闻的访问。请参阅 TOR 或 FreeNet。 b) Z 的管理员已阻止 X。示例:Z 的管理员注意到来自 X 的黑客攻击,因此管理员决定阻止 X 的 IP 地址(和/或网络范围)。 Z是一个论坛网站。 X 正在向论坛发送垃圾邮件。 Z 阻挡 X。
a) 对 X 的 Internet 连接具有管理权限的人决定阻止对站点 Z 的所有访问。示例:Storm Worm 病毒通过诱骗人们访问 familypostcards2008.com 进行传播,因此系统管理员已阻止访问该站点以阻止用户访问从不经意间感染自己。一家大公司的员工在 facebook.com 上浪费了太多时间,因此管理层希望在工作时间阻止访问。当地一所小学禁止访问 playboy.com 网站。政府无法控制新闻的发布,因此它通过封锁 wikipedia.org 等网站来控制对新闻的访问。请参阅 TOR 或 FreeNet。
示例:Storm Worm 病毒通过诱骗人们访问 familypostcards2008.com 进行传播,因此系统管理员已阻止对该站点的访问,以防止用户无意中感染自己。一家大公司的员工在 facebook.com 上浪费了太多时间,因此管理层希望在工作时间阻止访问。当地一所小学禁止访问 playboy.com 网站。政府无法控制新闻的发布,因此它通过封锁 wikipedia.org 等网站来控制对新闻的访问。请参阅 TOR 或 FreeNet。
Storm Worm 病毒通过诱骗人们访问 familypostcards2008.com 进行传播,因此系统管理员已阻止对该站点的访问,以防止用户无意中感染自己。
一家大公司的员工在 facebook.com 上浪费了太多时间,因此管理层希望在工作时间阻止访问。
当地一所小学禁止访问 playboy.com 网站。
政府无法控制新闻的发布,因此它通过封锁 wikipedia.org 等网站来控制对新闻的访问。请参阅 TOR 或 FreeNet。
b) Z 的管理员已阻止 X。示例:Z 的管理员注意到来自 X 的黑客攻击,因此管理员决定阻止 X 的 IP 地址(和/或网络范围)。 Z是一个论坛网站。 X 正在向论坛发送垃圾邮件。 Z 阻挡 X。
示例:Z 的管理员注意到来自 X 的黑客攻击,因此管理员决定阻止 X 的 IP 地址(和/或网络范围)。 Z是一个论坛网站。 X 正在向论坛发送垃圾邮件。 Z 阻挡 X。
Z 的管理员注意到来自 X 的黑客攻击,因此管理员决定阻止 X 的 IP 地址(和/或网络范围)。
Z是一个论坛网站。 X 正在向论坛发送垃圾邮件。 Z 阻挡 X。
反向代理
台计算机的故事(第二部分)
对于这个例子,我将列出三台连接到互联网的计算机。
X = 您的计算机,或 Internet 上的“客户端”计算机
= 反向代理网站 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 有一个数百万人想查看的大型网站,但单个 Web 服务器无法处理所有流量。因此,Z 设置了许多服务器,并在互联网上放置了一个反向代理,当用户尝试访问 Z 时,它将把用户发送到离他们最近的服务器。这是内容分发网络 (CDN) 概念工作原理的一部分。示例:Apple Trailers 使用 Akamai Jquery.com 使用 CloudFront CDN 托管其 JavaScript 文件(示例)。等等
a) Z 有一个数百万人想查看的大型网站,但单个 Web 服务器无法处理所有流量。因此,Z 设置了许多服务器,并在互联网上放置了一个反向代理,当用户尝试访问 Z 时,它将把用户发送到离他们最近的服务器。这是内容分发网络 (CDN) 概念工作原理的一部分。示例:Apple Trailers 使用 Akamai Jquery.com 使用 CloudFront CDN 托管其 JavaScript 文件(示例)。等等
示例:Apple Trailers 使用 Akamai Jquery.com 使用 CloudFront CDN 托管其 JavaScript 文件(示例)。等等
Apple Trailers 使用 Akamai
Jquery.com 使用 CloudFront CDN(示例)托管其 JavaScript 文件。
等等
2)Z的管理员担心托管在服务器上的内容遭到报复,不想将主服务器直接暴露给公众。 a) “Canadian Pharmacy”等垃圾邮件品牌的所有者似乎拥有数千台服务器,而实际上大多数网站托管在更少的服务器上。此外,关于垃圾邮件的滥用投诉只会关闭公共服务器,而不是主服务器。
a) “Canadian Pharmacy”等垃圾邮件品牌的所有者似乎拥有数千台服务器,而实际上大多数网站托管在更少的服务器上。此外,关于垃圾邮件的滥用投诉只会关闭公共服务器,而不是主服务器。
在上述场景中,Z
可以选择 Y
。
帖子中的主题链接:
内容交付网络
CDN 列表 http://www.mytestbox.com/miscellaneous/content-delivery-networks-cdn-list/ http://blog.streamingmedia.com/the_business_of_online_vi/2008/01/updated-list-of.html
http://www.mytestbox.com/miscellaneous/content-delivery-networks-cdn-list/
http://blog.streamingmedia.com/the_business_of_online_vi/2008/01/updated-list-of.html
转发代理软件(服务器端)
PHP-代理
cgi代理
phproxy(已停产)
字形
互联网审查维基:网络代理列表
鱿鱼(显然,也可以作为反向代理)
HTTP反向代理软件(服务器端)
Apache mod_proxy(也可以作为 HTTP 的转发代理)
nginx(用于 hulu.com、垃圾邮件网站等)
HAProxy
球童网络服务器
轻型httpd
perlbal(为 livejournal 编写)
端口融合
磅
清漆缓存(由 FreeBSD 内核大师编写)
休息
TCP反向代理软件(服务器端)
平衡
代表
笔
端口融合
纯负载均衡器(网站已失效)
蟒蛇导演
也可以看看:
维基百科 - 内容交付网络
维基百科 - 类别:Reverse_proxy
维基百科 - 负载平衡
维基百科 - 可扩展性
一对简单的定义是:
正向代理:代表请求者(或服务消费者)行事
反向代理:代表服务/内容生产者行事。
我发现下面的图表非常有帮助。它只是显示了通过 Internet 从客户端到服务器的 forward 与 reverse 代理设置的体系结构。此图片将帮助您更好地理解 qyb2zm302's answer 和其他答案。
https://i.stack.imgur.com/0qpxZ.png
您还可以在 F5 的 DevCentral 中观看 Peter Silva 的 this video。
图片来源:Quora。但是,根据 Martijn Pieters,此图像可能来自 Pulse Secure Community 或 Julien Pauli 在 developpez.com 上的 site(法语)。
这让我想起了一句经典谚语:
一张图片值1000字。
Forward Proxy vs. Reverse Proxy (2012) 非常清楚地解释了正向和反向代理之间的区别。
qyb2zm302's answer 很好地详细说明了代理的应用,但它在正向和反向代理之间的基本概念上出现了失误。对于反向代理,X → Y → Z,X 知道 Y 而不是 Z,反之亦然。
代理只是通信(请求+响应)的中间人。客户端 <-> 代理 <-> 服务器
客户端代理:(客户端<->代理)<->服务器
代理代表客户行事。客户端知道链中涉及的所有三台机器。服务器没有。
服务器代理:客户端<->(代理<->服务器)
代理代表服务器行事。客户端只知道代理。服务器知道整个链。
在我看来,正向和反向只是客户端和服务器代理的令人困惑的、依赖于视角的名称。我建议为后者放弃前者,以进行明确的沟通。
当然,更复杂的是,并不是每台机器都只是客户端或服务器。如果上下文有歧义,最好明确指定代理所在的位置,以及它通过隧道传输的通信。
一些图表可能会有所帮助:
转发代理
https://i.stack.imgur.com/MPQAt.png
反向代理
https://i.stack.imgur.com/xrOba.png
区别主要在于部署。 Web 正向和反向代理都具有相同的基本功能。它们接受各种格式的 HTTP 请求并提供响应,通常是通过访问源服务器或联系服务器。
功能齐全的服务器通常具有访问控制、缓存和一些链接映射功能。
转发代理是通过配置客户端机器访问的代理。客户端需要对代理功能(重定向、代理身份验证等)的协议支持。代理对用户体验是透明的,但对应用程序不透明。
反向代理是部署为 Web 服务器的代理,其行为类似于 Web 服务器,不同之处在于它不是在本地组合来自程序和磁盘的内容,而是将请求转发到源服务器。从客户端的角度来看,它是一个 Web 服务器,因此用户体验是完全透明的。
事实上,单个代理实例可以同时针对不同的客户端群体作为正向和反向代理运行。
代理:它代表客户端发出请求。因此,服务器将响应返回给代理,代理将响应转发给客户端。事实上,服务器永远不会“知道”客户端是谁(客户端的 IP 地址);它只会知道代理。但是,客户端肯定知道服务器,因为它基本上格式化了发往服务器的 HTTP 请求,但它只是将其交给代理。
https://i.stack.imgur.com/eeQP2.png
反向代理:它代表服务器接收请求。它将请求转发到服务器,接收响应,然后将响应返回给客户端。在这种情况下,客户端永远不会“知道”谁是实际的服务器(服务器的 IP 地址)(有一些例外);它只会知道代理。服务器将知道或不知道实际的客户端,具体取决于反向代理的配置。
https://i.stack.imgur.com/zOvvx.png
代理服务器代理(并且可选地缓存)传出网络请求到 Internet 上的各种非必要相关的公共资源。反向代理捕获(并且可选地缓存)来自 Internet 的传入请求,并将它们分发到各种内部私有资源,通常用于高可用性目的。
代理(正向代理):
当 LAN 上的计算机连接到访问 Internet 的代理服务器时。好处仅包括暴露于 Internet 的服务器。外面的人无法直接访问计算机。转发代理可以通过缓存下载来改善用户的 Internet 访问。它们还可用于限制对某些站点的访问。此外,只有代理服务器需要公共地址,而不是连接到它的客户端。
反向代理:
反向代理与正向代理相反。相反,它代表所连接的服务器充当代理。用户不会直接访问远程服务器,而是通过反向代理并从那里定向到适当的服务器。只有反向代理需要 SSL 证书,只需要一个公共 IP 地址,并且它可以处理传入请求的负载平衡以增强整体用户体验。
https://i.stack.imgur.com/J7PA8.jpg
图片来源:Creating a Forward Proxy Using Application Request Routing
Cloudflare 有一篇很棒的文章,其中包含详细解释这一点的图像。检查这里:什么是反向代理? |代理服务器解释
https://i.stack.imgur.com/x2jwy.png
https://i.stack.imgur.com/2ERPI.png
从 Apache 的角度来看,我的理解是代理意味着如果站点 x 代理站点 y,则对 x 的请求返回 y。
反向代理意味着来自 y 的响应被调整,以便所有对 y 的引用都变为 x。
这样用户就无法分辨出涉及代理...
据我了解...
首先,众所周知,代理的意思是“代表他人的权力”。现在有两件事,正向和反向代理。
转发代理
假设您要访问“Google”,而“Google”又将有 n 个服务器来响应该特定请求。
现在在这种情况下,当您向 Google 请求某些内容并且您不希望 Google 看到您的 IP 地址时,您将使用转发代理,如下所述。
A → B → C
现在你是A,通过B发送请求。所以C会认为请求来自B,而不是A。这样你可以防止你的客户端IP地址不暴露给外界。
反向代理
现在在这种情况下,为了让您理解,我们将采用相同的转发代理案例。在这里,您向 Google 请求了一些东西,然后 Google 会将一个请求发送到应用服务器或另一台代理服务器以获取响应。因此,这些事情将如下所述发生。
A → B → C
C → D
C ← D
A ← B ← C
从上图中可以看出,一个请求是从 B 发送到 C 的,而不是从 A 发送的。然后从 C 将有一个请求发送到 D。同样,响应将从 D 到 C,然后到 B 和 A。
上图表明,尽管两个代理的行为方式相同,但只有上下文很重要,但是客户端代理隐藏了客户端信息,而服务器端代理将隐藏服务器端信息。
这是一个反向代理(作为负载均衡器)的示例。
一个客户端浏览到 website.com,它所访问的服务器上运行着一个反向代理。反向代理恰好是 Pound。 Pound 接收请求并将其发送到位于其后面的三个应用程序服务器之一。在此示例中,Pound 是一个负载均衡器。也就是说,它正在平衡三个应用程序服务器之间的负载。
应用程序服务器将网站内容返回给客户端。
转发代理为用户服务:它帮助用户访问服务器。
反向代理服务于服务器:它保护服务器免受用户的侵害。
如果没有代理
从客户端和服务器端看是一样的:
客户端 -> 服务器
代理人
从客户端:
客户端 -> 代理 -> 服务器
从服务器端:
客户端 -> 服务器
反向代理
从客户端:
客户端 -> 服务器
从服务器端:
客户端 -> 代理 -> 服务器
所以我觉得如果是客户端用户设置的,就叫代理;如果是服务器管理员设置的,就是反向代理。
因为设置它的目的和原因不同,它们处理数据的方式不同,使用的软件也不同。
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
代理服务器(也称为正向代理)和反向代理服务器之间的区别取决于参考点。
从技术上讲,两者完全相同。两者都用于代表源将数据传输到目的地的相同目的。
区别在于“代理服务器代表谁/代理服务器代表谁?”
如果代理服务器代表最终用户将请求转发到互联网服务器(例如:大学中的学生通过大学代理服务器访问互联网。),则代理称为“转发代理”或简称为“代理”。
如果代理服务器代表服务器响应传入请求,则代理称为“反向代理”,因为从最终用户的角度来看,它是在反向工作。
反向代理的一些示例:
Web 服务器前面的负载均衡器代表实际的 Web 服务器充当反向代理。 API 网关免费网站托管服务,如(facebook 页面/博客页面服务器)也是反向代理。实际内容可能在某个 Web 服务器中,但外界通过反向代理广告的特定 url 知道它。
使用正向代理:
监控组织的所有出站互联网连接 对互联网浏览应用安全策略并阻止下载恶意内容 阻止访问特定网站
使用反向代理:
为网站提供友好的 URL 跨多个 Web 服务器执行负载平衡 应用安全策略并保护实际 Web 服务器免受攻击
从用户的角度来看:向代理或反向代理服务器发送请求时:
代理 - 需要两个参数:1)获取什么和 2)使用哪个代理服务器
反向代理 - 需要一个参数:1)得到什么
反向代理从用户不知道的另一台服务器获取内容并返回结果,就好像它来自反向代理服务器一样。
以前的大多数答案都很好,但在我看来,没有一个答案能够很好地解决区分两者的“反向”质量。为此,需要给出某种方式来可视化本质上相同的事物(代理)的“反向”性质,并且需要以一种非常抽象的方式给出。
代理(隐含的“转发代理”)将多个本地客户端连接到任何一个远程服务器:
c--
|--p--s
c--
反向代理将多个本地服务器连接到任何一个远程客户端(注意布局如何反转):
s--
|--p--c
s--
真正正确地理解这个概念是一个视角问题,需要抽象出非必要的(对于特定概念的)细节,尽管它们在代理操作的语用学方面可能非常重要。这些细节包括这样一个事实,即在这两种情况下,现实情况是多个客户端连接到多个服务器,客户端和服务器可能不是真正的本地或远程的,互联网云位于何处或客户端和服务器之间存在什么样的可见性。
让我们考虑一下服务的目的。
在正向代理中:
代理帮助用户访问服务器。
在反向代理中:
代理帮助用户访问服务器。
在后一种情况下,被代理帮助的不再是用户,而是服务器,这就是我们称之为反向代理的原因。
不定期副业成功案例分享
(X --> Y) --> Z
,反向:X --> (Y --> Z)
。