【nginx】反向代理和正向代理的区别

nginx工作图示如下:
【nginx】反向代理和正向代理的区别_第1张图片

更详细一些:
【nginx】反向代理和正向代理的区别_第2张图片

补充一个小知识:

  1. 概念
      正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。

反向代理正好相反。对于客户端来说,反向代理就好像目标服务器。并且客户端不需要进行任何设置。客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反向代理后面的服务,也因此不需要客户端做任何设置,只需要把反向代理服务器当成真正的服务器就好了。

  1. 区别
      正向代理需要你主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或者域名去获取访问内容并返回;而反向代理不需要你做任何设置,直接访问服务器真实ip或者域名,但是服务器内部会自动根据访问内容进行跳转及内容返回,你不知道它最终访问的是哪些机器。

正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。

从上面的描述也能看得出来正向代理和反向代理最关键的两点区别:

是否指定目标服务器
客户端是否要做设置
下面用一张图来表示两者的差异:
【nginx】反向代理和正向代理的区别_第3张图片
从用途上来区分:

正向代理:正向代理用途是为了在防火墙内的局域网提供访问internet的途径。另外还可以使用缓冲特性减少网络使用率
反向代理:反向代理的用途是将防火墙后面的服务器提供给internet用户访问。同时还可以完成诸如负载均衡等功能
  从安全性来讲:

正向代理:正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
反向代理:对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器

正向代理是在客户端和目标服务器之间充当中间人的代理服务器。当客户端请求访问目标服务器时,请求先发送到正向代理服务器,然后由代理服务器转发请求给目标服务器,并将目标服务器的响应返回给客户端。正向代理隐藏了客户端的真实IP地址,使得目标服务器无法直接识别和追踪客户端。
简而言之:正向代理是客户端访问代理服务器去访问目标服务器,并且对目标服务器隐藏了客户端的真实信息(IP等信息)。

正向代理的主要用途包括:

访问被限制的资源:当某些资源受到网络限制或访问限制时,可以使用正向代理绕过这些限制来获取资源。
提高访问速度:代理服务器可以缓存经常请求的资源,从而提高客户端访问资源的速度。
突破防火墙:正向代理可以帮助绕过企业或国家防火墙的限制,访问被封锁的网站或资源。

反向代理是在服务器端和客户端之间充当中间人的代理服务器。当客户端发送请求访问反向代理服务器时,代理服务器会根据一定的规则将请求转发给后端的多个服务器中的一台,然后将后端服务器的响应返回给客户端。反向代理隐藏了真实的服务端,对于客户端而言,它们并不知道具体访问的是哪一台后端服务器。

    **简而言之:反向代理是指代理服务器接收客户端的请求,然后反向代理将客户端的请求分发给一个或多个目标服务器,最后将响应返回给客户端,对于客户端隐藏了真实的服务端信息。**
反向代理的主要用途包括:

负载均衡:反向代理可以根据一定的算法将请求均匀地分发给后端的多台服务器,从而实现负载均衡,提高系统的并发处理能力和稳定性。
缓存静态资源:反向代理可以缓存经常请求的静态资源,减少后端服务器的负载,提高网站的访问速度。
安全性和可靠性:反向代理可以作为防火墙和安全设备,提供安全认证、访问控制、DDoS攻击防护等功能。

总结:
正向代理和反向代理都是利用代理服务器作为中间人来转发请求和响应。
正向代理是客户端通过代理服务器发送请求,代理服务器帮助客户端发送请求到互联网上的目标服务器。隐藏客户端的真实IP地址(目标服务器并不知道是那个真实的客户端访问的)。
反向代理是客户端通过代理服务器发送请求,代理服务器将请求转发到后端的多个服务器中的一个。反向代理隐藏真实的服务端(客户端并不知道那个后端服务器响应的结果)。
两者的区别在于请求的流向和代理服务器与目标服务器的关系,正向代理中代理服务器与客户端处于同一侧(客户端通过代理服务器获取特定的资源),反向代理中代理服务器与目标服务器处于同一侧(服务端通过代理服务器处理客户端的请求)。

参考文章:(其中有更详细的解释)
正向代理和反向代理的区别1
正向代理和反向代理的区别2

你可能感兴趣的:(nginx,nginx,java)