刚步入工作跟项目时,经常会有前端的同学和你说“XXX跨域了,Nginx做一下代理”,你也明白用Nginx做一下代理就能解决跨域的问题,但是对于“代理”这两个字你既熟悉又陌生,直到有人来问你,加速器是正向代理还是反向代理?VPN是正向代理还是反向代理?负载均衡是正向代理还是反向代理?你蒙圈了。

Q1:加速器是正向代理还是反向代理?

Q2:VPN是正向代理还是反向代理?

Q3:负载均衡是正向代理还是反向代理?

在回答这三个问题之前,来快速理解一下正、反向代理的区别

正向代理

如上图,用户在已知目标服务器的地址的情况下,用户无法直接访问目标服务器,此时就需要一台能访问目标服务器代理服务器,让它来代替用户去获取目标服务器的资源然后返回给用户,这种情况被称为正向代理

很显然,正向代理的场景下,用户明确知道目标服务器的地址,但是无法访问,需要借助一些中间手段。

反向代理

如上图,依然是用户在已知目标服务器(代理服务器)的地址的情况下,用户可以直接访问目标服务器(代理服务器),但是实际上,用户的请求会被转发到对应的目标服务器ABC,比如目标服务器(代理服务器)收到用户的请求后发现用户需要的资源在目标服务器A,那么目标服务器(代理服务器)就会去目标服务器A获取用户需要的资源然后返回给用户,同样如果目标服务器(代理服务器)发现用户需要的资源在目标服务器B,那么目标服务器(代理服务器)就会去目标服务器B获取用户需要的资源然后返回给用户,这种情况被称为反向代理

很显然,反向代理的场景下,用户只知道目标服务器的地址,并不知道目标服务器A、目标服务器B、目标服务器C的存在,整个请求转发的过程对用户来说都是无感的,从用户侧看到的“目标服务器”实则上是“代理服务器”。

那么接下来回答一下开头的三个问题

Q1、Q2、Q3答案

A1:加速器属于正向代理

A2:VPN属于正向代理

A3:负载均衡属于反向代理