最近面试被问到了项目的反向代理,感觉不是很清晰,于是在这里总结一下。
共同点
正向代理和反向代理都是用一个代理服务器(作为中间人)来处理客户端请求,然后请求服务器获取资源。
区别
首先是代理的对象不同,换句话说,代理服务器的扮演的角色不同,正向代理代理的是用户,反向代理代理的是服务器
- 正向代理代理的是用户,指的是用户把要请求的服务器地址发给代理服务器,代理服务器作为用户去请求服务器,然后把资源转发给客户,这样做一是对服务器隐藏了用户的地址,二是在一些场景中,可以提速(比如客户端到服务器是低宽带链路,而代理到两方都是高宽带链路),三是可以验证客户端访问权限。
- 反向代理代理的是服务器,用户不知道服务器的地址,而是直接把代理服务器当作服务器去请求,代理服务器作为服务器接受用户请求,然后请求并转发服务器。这样做一是隐藏了服务器地址,而且代理服务器可以对一些攻击进行拦截,保护服务器安全(nginx服务器崩溃时,重新搭建比较简单,影响小),二是在多个反向代理服务器场景时(也就是集群时),可以通过负载均衡对并发进行控制。
学习资料: