文章目录
- 概述
- 正向代理
- 反向代理
- 主要用途
概述
正向代理和反向代理都是网络中常见的代理类型,用于在客户端和服务器之间进行通信。
正向代理(Forward Proxy)是位于客户端和目标服务器之间的代理服务器。当客户端发送请求时,请求会经过正向代理服务器,然后由代理服务器转发给目标服务器,并将响应返回给客户端。客户端并不知道真实的目标服务器是什么,只与正向代理服务器进行通信。正向代理常用于保护客户端的隐私、绕过网络限制或实现缓存等功能。
举个例子,如果你在公司内部访问互联网,可能会遇到一些限制,如无法访问特定网站。此时,你可以通过设置一个正向代理服务器,在代理服务器上访问被限制的网站,再将结果传递给你。这样,就实现了绕过公司网络限制的目的。
反向代理(Reverse Proxy)则位于服务端和客户端之间。它接收客户端的请求,并将请求转发给内部的多个服务器,然后将接收到的响应返回给客户端。客户端不知道真正处理请求的服务器是哪一个,只与反向代理服务器进行通信。反向代理常用于负载均衡、提供高可用性和安全性等方面。
以网站服务器为例,当用户访问一个网站时,请求会先经过反向代理服务器,然后由反向代理服务器将请求分发给一组真实的服务器上进行处理。这样可以减轻单个服务器的负载压力,并提高服务器的可用性和响应速度。
总结起来,正向代理是代理客户端,隐藏客户端的身份,帮助客户端访问目标服务器;反向代理是代理服务器端,隐藏服务器的身份,帮助服务器接收和处理客户端的请求。
正向代理
首先让我们想一想,在日常生活中,我们有哪些场景下会使用到正向代理呢?一个场景就是当我们要访问的网站不能访问,我们就可以通过代理服务器来访问。这里的代理服务器就是一个正向代理服务器。我们自己的电脑作为客户端,首先会向代理服务器发送一个请求,并且指定目标服务器,之后代理服务器向目标服务器发送请求,并且将获得的内容返回给客户端。正向代理下客户端必须做一些特殊的设置。说白了,正向代理服务器就是帮客户端去请求目标服务器。如下图:正向代理中,proxy和client同属于一个LAN,对server透明。
反向代理
反向代理的过程与正向代理恰恰相反,正向代理的话客户端需要做一些设置,设置代理服务器。而反向代理的话,对客户端而言,代理服务器就好像是目标服务器,客户端向反向代理服务器发送请求,接着反向代理服务器判断请求走向何处,并将请求转交给客户端,反向代理服务器作用在服务端,它在服务器端接收客户端的请求,然后再将请求分发给具体的服务器进行处理。然后再将服务器的相应结果反馈给客户端。一个很典型的应用就是我们通过Nginx作为代理服务器。如下图所示:反向代理中,proxy和server同属于一个LAN,对client透明,实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把前者那种代理方式叫做正向代理,
后者叫做反向代理
主要用途
正向代理的主要用途包括
- 访问控制和过滤:可以通过正向代理来限制或过滤特定的网络流量,例如限制特定网站的访问或过滤不安全的内容。
- 提高访问速度:可以缓存常用的网络资源,加速对这些资源的访问,特别是对于分布在不同地区的网络资源,通过正向代理可以将这些资源缓存在更接近用户的位置。
- 隐藏客户端真实IP地址:客户端通过正向代理访问网络资源时,目标服务器只能看到代理服务器的IP地址,而无法获取客户端的真实IP地址,这有助于保护客户端的隐私。
反向代理的主要用途包括 - 负载均衡:通过反向代理,可以将客户端的请求分发到多个后端服务器上,从而平衡服务器负载,提高整体系统的性能和可用性。
- 隐藏真实服务器:反向代理可以隐藏后端服务器的真实IP地址和其他信息,将客户端请求的处理过程与真实服务器分离,提高了系统的安全性,使得攻击者难以直接访问到后端服务器。
- SSL终端:反向代理可以充当SSL终端,负责处理客户端和服务器之间的SSL/TLS连接,从而减轻服务器的负担,同时提供更高级别的安全性。
综上所述,正向代理主要用于隐藏客户端、访问控制和加速访问,而反向代理主要用于负载均衡、隐藏真实服务器和提供安全性。两者在实际应用中通常会结合使用,以满足不同的网络需求和安全要求