这几天正好在接触Nginx,涉及到反向代理,之前对于这块有点模糊,随即通过强大的Internet恶补了这方面的知识,特整理了相关笔记以加强记忆!

  • 正向代理(Normal Proxy)

    该方式就是我们通常所说的代理服务器,只用于代理内部网络对Internet上的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,由代理服务器与Web服务器进行交互,并将最终获取的数据通过Proxy返回到客户机。

    这个就好比我们现在访问谷歌一样,在大陆是无法访问谷歌的搜索服务的,但是我们通过某宝买一个代理后,就可以通过它进行访问了,这个访问过程就可以看做是正向代理。

    从安全角度来看,正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,原始服务器并不知道访问它的实际是用户,因为代理服务器是代替用户跟原始服务器进行交互的,所以代理服务器有被恶意用户控制,而做为“肉鸡”去***原始服务器的风险。

  • 反向代理(Reverse Proxy)

    该方式其实和正向代理正好相反,是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

    当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

    从安全角度来看,当代理服务器通过反向代理提供服务时,此时其对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器并没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的***并不会使得网页信息遭到破坏,这样就增强 了Web服务器的安全性。

  • 两者的区别:

    反向代理方式和正向代理方式并不会产生冲突,因此可以在防火墙设备中同时使用这两种方式。其中反向代理用于外部网络访问内部网络时使用,正向代理方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。

  • 缓存(Cache)

    这个可以看做是两者的相同点,反向代理服务器和正向代理服务器一样都拥有Cache的作用,它可以缓存原始资源服务器的资源,而不是每次都要向原始资源服务器请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户来自同一个网络,那么用户访问反向代理服务器,就会得到很高质量的速度,这也正是CDN技术的核心。而在内部网络以集群方式搭建的代理服务器,就是为了提供我们常说的负载均衡。