分布式篇 - 一篇搞懂正向代理和反向代理
博主今天终于考完了最难的一门考试,老师说题目会很简单,结果一考完,同学们都怨声载道,哈哈哈(博主由于接了一个小项目,只复习了两天,幸亏之前有看书)。
今天就先不分享容器技术啦,开始新的征程,分布式篇。
博主想给大家分享一下正向代理和反向代理的一些基本概念。
一 什么是代理
什么是代理?代理其实就相当于交易双方的中间商,当客户端想要与服务端进行“交易”时,代理就需要充当中间商的身份来完成这一次交易。
因为交易双方是两个主体,当中间商为客户端服务时,该中间商就是正向代理,反之为反向代理。
二 正向代理
当代理为客户端服务时,该代理就是正向代理。
举一个很常见的例子,比如大家都需要上网,也就需要路由器或者网络提供商来提供上网环境,而这两者都是正向代理的例子。
打开CMD,执行ipconfig
命令后,得到的IP地址为192.168.43.234
,这其实就是博主电脑的私网IP地址。
而打开百度,输入IP后,得到的IP地址为36.158.146.75
,这其实就是路由器或者网络提供商的IP地址,是一个公网IP地址。
只有公网IP地址才能在整个互联网环境中进行网络通信,而私网IP地址只能在自己的局域网中进行网络通信。这也就是为什么我们需要路由器或者网络提供商来提供上网环境,因为我们本地电脑只有私网IP地址,没有公网IP地址,当我们购买云服务器时,云服务器是有两个IP地址,一个公网IP地址和一个私网IP地址。
想要详细了解公网IP地址和私网IP地址可以看一下这篇博客:为什么百度查到的IP和ipconfig命令的结果不一样 、详解公网IP、私网IP、网络分类(A、B、C)。
正向代理的结构如下图,将正向代理服务器看作是路由器或者网络提供商,再结合博主上面的解释,是不是就很容易理解了。
当客户端想要请求服务端时,客户端会将请求代理给正向代理服务器,正向代理服务器接收到请求后,会主动去请求服务端,服务端接收请求后,会将响应数据返回给正向代理服务器,最后由正向代理服务器将服务端响应的数据转发给客户端。这样就实现了客户端与服务端的请求与响应。
正向代理的用途:
- 加速资源访问,正向代理服务器可以缓存一些比较热的资源,当客户端请求这些热资源时,正向代理服务器就不需要再次请求服务端去获取资源了,只要取本地的缓存资源即可(可能存在缓存与服务端资源不一致的问题)。
- 对客户端访问授权,上网进行认证(是否还有流量或者话费上网)。
- 正向代理服务器可以记录用户访问记录(上网行为管理),对外隐藏用户信息。
博主本科学校晚上十一点后会限网,这也是正向代理的用途;学校无线网网络提供商的正向代理服务器接收到你想要访问的网络资源的请求后,判断该请求的网络资源是不是需要限制的网络资源,如果是,就限制你访问,否则就放行。
三 反向代理
当代理为服务端服务时,该代理就是反向代理。
反向代理在生活中也经常出现,只是我们不容易发现。比如双十一购物节,当我们选好了商品进行支付时,会请求支付服务,而当我们另外再去购买一次商品时,请求的支付服务就可能不一样了,这是为什么?双十一购物节,购物的人数非常多,请求支付服务的并发量也非常高,不可能让一台机器去负载如此高的并发量,所以支付服务就需要集群化,当用户请求支付服务时,反向代理作为服务端的中间商,会接收这次请求,然后选择支付服务集群中流量负载最小(只是举例子,负载均衡策略有很多)的那台服务器进行请求。
反向代理的结构如下图,结合博主上面的解释,是不是就很容易理解了。
当客户端想要请求服务端时,客户端实际上请求的是反向代理服务器(服务端集群只需要暴露反向代理服务器即可),反向代理服务器接收到客户端的请求后,通过一定的策略,选择合适的服务端进行请求,服务端接收请求后,会将响应数据返回给反向代理服务器,最后由反向代理服务器将服务端响应的数据转发给客户端。这样就实现了客户端与服务端的请求与响应,而真正的服务端可以不暴露在外网环境下,保证了服务端的安全。
反向代理的作用:
- 保证各种服务在内网的安全,防止
web
攻击,大型网站,通常将反向代理服务器作为公网访问地址,各种服务则处于内网之中。 - 负载均衡,反向代理服务器选择合适的服务进行请求,实现流量的负载均衡。
- 限流,当流量实在过大时,机器无法负载的情况下,反向代理服务器可以限制一部分流量请求服务(让请求失败)。
- 数据预处理,处理请求的数据,让服务端能够识别,以及在服务端的响应数据中添加或者删除一些数据等。
正向代理和反向代理就介绍到这里。
写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!