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


当前回答

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

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

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

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

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

其他回答

如果没有代理

从客户端和服务器端看是相同的:

客户端->服务器

代理

从客户端:

客户端->代理->服务器

从服务器端:

客户端->服务器

反向代理

从客户端:

客户端->服务器

从服务器端:

客户端->代理->服务器

所以我认为,如果它是由客户端用户设置的,它就叫做代理如果它由服务器管理器设置,则它是反向代理。

由于设置它的目的和原因不同,它们以不同的方式处理数据并使用不同的软件。

   User side          |      Server side
client  <->  proxy  <-->  reverse_proxy <-> real server

下面是一个反向代理(作为负载平衡器)的示例。

一个客户端浏览到website.com,它访问的服务器上运行着一个反向代理。反向代理恰好是Pound。Pound接收请求并将其发送到位于其后面的三个应用服务器之一。在本例中,Pound是一个负载平衡器。也就是说,它正在平衡三个应用程序服务器之间的负载。

应用服务器将网站内容提供给客户端。

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

转发代理服务器

反向代理

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

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

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

前面的大多数答案都是好的,但在我看来,没有一个答案能很好地解决区分两者的“反向”问题。要做到这一点,需要给出某种方式来可视化本质上相同的事物(代理)的“反向”性质,并且需要以一种很好的抽象方式来给出。

代理(隐式“转发代理”)将多个本地客户端连接到任意一个远程服务器:

c--
   |--p--s
c--

反向代理将多个本地服务器连接到任何一个远程客户端(请注意布局如何反向):

s--
   |--p--c
s--

这是一个角度问题,真正正确地理解这个概念需要抽象出非必要的(特定概念的)细节,尽管这些细节在涉及代理操作的语用学时可能非常重要。这些细节包括这样一个事实:在这两种场景中,现实是多个客户端连接到多个服务器,客户端和服务器可能不是真正的本地或远程,互联网云位于何处,或者客户端和服务器之间存在什么样的可见性。