最近学习到了SpringCloud的Zuul组件,总是听说一个词–反向代理,所以搜了相关资料,大概了解了正向代理和反向代理的区别。
1.代理?为什么用代理
普通的客户端到服务端的访问流程是客户端发起请求到服务端,由服务端返回内容到客户端。而在实际中,客户端有的时候访问不到服务端,比如Google,所以需要一个代理,在client和server之间形成一个桥梁。
2.正向代理
正向代理的模式是,client通过IP地址和端口号连接代理服务器,将请求发送到代理服务器,再由代理服务器去server获取数据,然后代理服务器再将数据返回给client。可以看到client与代理服务器处于同一个局域网。
图解
正向代理的用途:
(1)访问原来无法访问的资源,如google
(2)可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
3.反向代理
如果说正向代理服务器代理的是客户端的请求,即代理client去跟server获取数据,那么反向代理服务器就是代理的服务端的接口,即代理server去响应client的请求。
客户端无需配置代理服务器的位置和端口。从客户端角度来看,反向代理服务器就跟正常的服务器一样,client的任何请求都会在反向代理服务器那里分发到指定的server,然后server返回的数据再由代理服务器返回给client,server的地址对client是不可见的。相对于正向代理,反向代理服务器与server处在一个局域网中,与正向反过来了,所以叫做反向代理。
学习过zuul网关之后,了解到这种反向代理的作用之一是分发请求并做负载均衡,同时在代理服务器中也可以对client的请求鉴权什么的,此外,由于server地址对client不可见,因此也保障了server的安全。
反向代理的作用:
(1)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击:大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。
(2)负载均衡,通过反向代理服务器来优化网站的负载
正向代理与反向代理的区别