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


当前回答

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

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

其他回答

我从Apache的角度理解,代理意味着如果站点x代理站点y,那么请求x返回y。

反向代理意味着对y的响应进行调整,以便所有对y的引用都变为x。

因此,用户无法判断是否涉及代理。。。

代理服务器(也称为正向代理)和反向代理服务器之间的区别取决于参考点。

从技术上讲,两者完全相同。两者都具有代表源向目的地传输数据的相同目的。

区别在于“代理服务器代表谁/代理服务器代表什么?”

如果代理服务器代表最终用户向互联网服务器转发请求(例如:大学中的学生通过大学代理服务器访问互联网),则代理称为“转发代理”或简称“代理”。

如果代理服务器代表服务器响应传入的请求,则该代理被称为“反向代理”,因为从最终用户的角度来看,它的工作方向相反。

反向代理的一些示例:

web服务器前面的负载平衡器充当代表实际web服务器的反向代理。API网关免费网站托管服务(如facebook页面/博客页面服务器)也是反向代理。实际内容可能在某个web服务器中,但外部世界通过反向代理发布的特定url知道它。

转发代理的使用:

监视来自组织的所有出站internet连接对internet浏览应用安全策略并阻止下载恶意内容阻止访问特定网站

使用反向代理:

显示网站的友好URL跨多个web服务器执行负载平衡应用安全策略并保护实际web服务器免受攻击

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

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

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

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

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

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

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

在我看来,正向和反向只是客户端和服务器代理的混淆、依赖于透视的名称。我建议放弃前者,改用后者,进行明确的沟通。

当然,让事情更复杂的是,并不是每台机器都是客户端或服务器。如果上下文中存在歧义,最好明确指定代理所在的位置以及它通过隧道传输的通信。

代理(转发代理):

当LAN上的计算机连接到访问Internet的代理服务器时。好处包括只将服务器暴露在Internet上。外面的人无法直接访问计算机。转发代理可以通过缓存下载来改善用户的Internet访问。它们还可用于限制对某些网站的访问。此外,只有代理服务器需要公共地址,而不是连接到它的客户端。

反向代理:

反向代理与正向代理相反。相反,它充当连接到的服务器的代理服务器。只有反向代理需要SSL证书,只需要一个公共IP地址,它可以处理传入请求的负载平衡,以增强整体用户体验。

图片来源:使用应用程序请求路由创建转发代理

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

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