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


当前回答

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

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

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

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

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

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

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

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

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

其他回答

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

区别主要在于部署。Web正向和反向代理都具有相同的底层特性。它们接受各种格式的HTTP请求请求并提供响应,通常通过访问源服务器或联系服务器。

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

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

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

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