正向代理与反向代理

今天早上看了篇nginx文章,提到了反向代理,其实十年前入职时,就听到用nginx 做反向代理,其实当时并不太清楚什么叫反向代理,记得当时我还拿这个去问前辈同事,在这之前只听过代理(比如为了访问google,使用代理软件,需要在浏览器配置代理的地址,然后通过代理访问),今天早上再次看到nginx相关的书,想总结一下正向代理和反向代理的区别

首先得弄清楚什么是正向代理,才能了解什么是反向代理?

正向代理

举个例子:

我是一个用户,我访问不了某个网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要的那个无法访问的网站,代理服务器帮我取回来,然后返回给我。从网站的角度看,只在代理服务器来取内容时有一次记录,有时候并不知道是用户的请求,也隐藏了用户资料,这取决于代理告不告诉网站

客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的ip地址,还有代理程序的端口。

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

正向代理的用途

访问原来无法访问的资源
做缓存,加速访问资源
对客户端访问授权,上网进行认证
上网行为管理,对外隐藏用户信息

反向代理

反向代理,客户端是无感知代理的存在的,反向代理对外都是透明的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问

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

反向代理的用途

(1)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击, 通常将反向代理作为公网访问地址,Web服务器是内网

(2)负载均衡,通过反向代理服务器来优化网站的负载

反向代理一般用来作负载均衡的比较多

nginx 的反向代理

nginx支持配置反向代理,通过反向代理实现网站的负载均衡。这部分先写一个nginx的配置,后续需要深入研究nginx的代理模块和负载均衡模块。

nginx通过proxy_pass_http 配置代理站点,upstream实现负载均衡。

nginx 反向代理配置负载均衡

参考资料: https://www.cnblogs.com/anker/p/6056540.html