搞懂什么是正向代理与反向代理

一、正向代理

特点

为客户端作代理,隐藏了客户端。

介绍

客户端想要访问一个目标服务器,但可能因为这个目标服务器在国外,导致客户端不能直接访问目标服务器,或者可能是客户端出于隐藏自己的目的,向代理服务器发出我要访问目标服务器的请求,然后由代理服务器将客户端的请求转交给目标服务器处理,目标服务器处理完就将资源返回给代理服务器,代理服务器再将资源转交给客户端。
整个过程中,客户端对于目标服务器来说是隐藏的,就是说目标服务器并不知道访问我的到底是哪个客户端,它只知道访问我的总是那个代理服务器。

流程图

搞懂什么是正向代理与反向代理

应用场景

1)国内用户自己访问不了国外的某些网站,则可以通过可以访问国外网络的代理服务器(v*n)来访问。
2)企业处于安全考虑,不想让企业内部电脑的 ip和port 暴露在互联网,则搭建一个代理服务器,并对这台代理服务器做一些安全工作,然后对外暴露的只是代理服务器,起到一个防火墙的功能。

二、反向代理

特点

为服务器作代理,隐藏了服务端。

介绍

一些企业的服务因为访问量太大,为了提高访问效率,将一个服务分别部署在多台目标服务器,然后再搭建一台代理服务器,由这台代理服务器统一对外提供服务,这样导致的是隐藏了真实提供服务的目标服务器,客户端想要获取这个服务,就必须访问代理服务器,代理服务器使用负载均衡机制来将客户端的请求转交给空闲的目标服务器。我们常见的Nginx通常就是用于反向代理,也可以用于正向代理,但较少见。

流程图

搞懂什么是正向代理与反向代理

应用场景

1)我有一个图片分享网站,出于高并发的考虑,将这个网站完整地部署到多台服务器,使用Nginx反向代理技术将用户请求分发到空闲的服务器。但这会导致一个问题:假设我新上传了一张图片,Nginx将我的上传请求转交给了A服务器,并把图片存储到A服务器,但B服务器并没有接收到这个请求,它不知道这张图片的存在,因此后面别人访问我的网站,到底能不能看到我新上传的图片,取决于Nginx将这个请求分发给了A服务器还是B服务器。
2)我有一个图片分享网站,出于高并发的考虑,将这个网站拆分成Web和图片两部分,即搭建一个web服务器,再搭建一个图片服务器,用户访问我的网站,Nginx将web请求分发给web服务器,将静态资源(图片)分发给图片服务器,就没有了1的问题,也起到了负载均衡的作用。