代理有正向代理和反向代理,我们从名称上并不能知道他们之间具体的区别,最近在尝试配置Nginx的时候接触到反向代理,看了多篇文章来搞清楚两者的区别,以下是我的理解。
正向代理
客户端需要代理。例如网络封锁,客户端需要代理服务器转发请求到目标服务器来获取目标服务器的资源。再例如客户端想要访问网站,但是并不想让目标网站知道自己的ip地址,这就可以通过代理服务器来访问目标网站。
特点:
- 代理需求是客户端提出的,因为客户端的某种需要才选择代理。
- 目标网站的服务端并不知道请求来自哪个具体的客户端,请求目标服务器的ip是代理服务器的。
反向代理
服务端需要代理。主要可以做负载均衡,通过一个代理服务器转发该请求到一个服务器集群中具体一台服务器来处理这个请求(该服务器在集群中压力相对较小)。
特点:
- 代理的需求是服务端提出的,目的是减小服务端单个服务器的压力。
- 客户端感知不到代理服务器背后服务器集群的存在,同时并不知道资源具体来自哪台服务器,只知道一个代理服务器的地址。
总结:
正向代理就像一个代购,客户说需要什么东西,代购就买来。真正卖东西的人并不知道到底是谁要买。
反向代理就像是一个管理许多仓库的仓库管理员,需要什么他会在合适的仓库给你找来。客户并不知道他拿到的东西到底是哪个仓库来的。
以上就是我对于正反代理的理解,如有不实之处感谢纠正。