代理服务器和反向代理服务器有什么区别?
代理服务器和反向代理服务器有什么区别?
1) 由于以下原因,X无法直接访问Z:
a) 管理X互联网连接的某人决定阻止对站点Z的所有访问。
b) Z的管理员已经阻止了X。
示例:
Z的管理员注意到来自X的黑客攻击,因此决定阻止X的IP地址(和/或网络范围)。
Z是一个论坛网站。X正在论坛上发送垃圾信息。Z阻止了X。
在这个例子中,我将列出连接到互联网上的三台计算机。
通常,人们会直接从 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
有能力选择Y
。
(X --> Y) --> Z
,反向方程式为 X --> (Y --> Z)
。 - Druckles一对简单的定义如下:
正向代理:代表请求者(或服务消费者)进行操作。
反向代理:代表服务/内容生产者进行操作。
我发现下面这张图非常有帮助。它展示了从客户端到服务器通过互联网的正向 vs. 反向代理设置的架构。这张图片将帮助你更好地理解qyb2zm302的答案和其他答案。
您还可以观看Peter Silva在F5的DevCentral发布的此视频。
图片来源:Quora。但是,根据Martijn Pieters的说法,这张图片可能来自Pulse Secure社区或Julien Pauli的网站(法语)在developpez.com上。
它让我想起了一个经典的谚语:
一图胜千言。
正向代理和反向代理 (2012)清楚地解释了正向代理和反向代理之间的区别。
qyb2zm302的回答详细说明了代理的应用,但在正向和反向代理之间的基本概念上犯了错误。对于反向代理,X → Y → Z,X只知道Y而不知道Z,而不是反过来。
代理只是通信(请求+响应)的中间人。客户端 <-> 代理 <-> 服务器
代理代表客户端行动。客户端知道链中涉及的所有三台机器。服务器不知道。
代理代表服务器行动。客户端只知道代理。服务器知道整个链。
对我来说,正向和反向只是客户端和服务器代理的令人困惑和透视依赖性名称。我建议放弃前者,采用后者进行明确的通信。
当然,要进一步复杂化问题,不是每台机器都是专门的客户端或服务器。如果上下文存在歧义,最好明确指定代理所在的位置以及它隧道传输的通信。
一些图表可能会有所帮助:
正向代理
反向代理
主要区别在于部署方式。Web正向代理和反向代理都具有相同的基本功能。它们接受不同格式的HTTP请求并提供响应,通常通过访问原始或联系服务器实现。
完整功能的服务器通常具有访问控制、缓存和一些链接映射功能。
正向代理是通过配置客户端机器访问的代理。客户端需要支持代理功能的协议(重定向、代理身份验证等)。代理对用户体验透明,但对应用程序不透明。
反向代理是作为Web服务器部署的代理,行为类似于Web服务器,除了它不像Web服务器那样从程序和磁盘本地组合内容,而是将请求转发给原始服务器。从客户端的角度来看,它是一个Web服务器,因此用户体验是完全透明的。
事实上,单个代理实例可以同时作为正向代理和反向代理运行,为不同的客户端群体提供服务。