热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

反向代理和负载均衡

反向代理和负载均衡

反向代理和负载均衡

1.什么是正向代理?

答:正向代理是针对客户端而言的。客户端想访问一个网站,但上不了网,可是客户端却能访问一个叫做代理服务器的东西,代理服务器可以帮助客户端上网。客户端先将请求发给代理服务器,代理服务器再将请求转发给网站,网站的响应结果先发给代理服务器,然后再由代理服务器转发给客户端。

简单来说,正向代理就是指代理服务器帮助客户端上网。


       随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大。有研究表明,网站访问延迟和用户流失率正相关,网站访问越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。其中一个方法就是加反向代理服务器。 

2.什么是反向代理?

答:传统代理服务器位于浏览器一侧,代理浏览器将HTTP请求发送到互联网上,而反向代理服务器位于网站机房一侧,代理网站Web服务器接收HTTP请求。和传统代理服务器可以保护浏览器安全一样,反向代理服务器也具有保护网站安全的作用,来自互联网的访问请求必须经过代理服务器,相当于在Web服务器和可能的网络攻击之间建立了一个屏障。

    除了安全功能,代理服务器也可以通过配置缓存功能加速Web请求。当用户第一次访问静态内容的时候,静态内容就被缓存在反向代理服务器上,这样当其他用户访问该静态内容的时候,就可以直接从反向代理服务器返回,加速Web请求响应速度,减轻Web服务器负载压力。事实上,有些网站会把动态内容也缓存在代理服务器上,比如维基百科及某些博客论坛网站,把热门词条、帖子、博客缓存在代理服务器上加速用户访问速度,当这些动态内容有变化时,通过内部通知机制通知反向代理缓存失效,反向代理会重新加载最新的动态内容再次缓存起来。

    此外,反向代理也可以实现负载均衡的功能,而通过负载均衡构建的应用集群可以提高系统总体处理能力,进而改善网站高并发情况下的性能。

       

什么情况下会使用到反向代理呢?

答:1.保护网站安全。和传统代理服务器可以保护浏览器安全一样,反向代理服务器也具有保护网站安全的作用,来自互联网的访问请求必须经过代理服务器,相当于在Web服务器和可能的网络攻击之间建立了一个屏障。

      2.缓存网站的静态资源,提高网站的响应速度。当用户第一次访问静态内容的时候,静态内容就被缓存在反向代理服务器上,这样当其他用户访问该静态内容的时候,就可以直接从反向代理服务器返回,加速Web请求响应速度,减轻Web服务器负载压力。

问题:有人说反向代理的用处之一为:部署到同一台服务器上的多个工程想共用80端口。这种情况下,可以使用反向代理服务器来统一接收请求,再将不同的请求转发给相应的服务器。

注意:让部署在同一台服务器上的不同工程共用80端口这件事并不是反向代理的功能,而是虚拟主机。反向代理相当于一个中转站,它代理的是不同的服务器(硬件上的,不是Tomcat服务器),而不是代理的同一台服务器上的不同的工程。反向代理最大的作用就是用来缓存网站的静态资源,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。

3.什么是负载均衡?

答:前面我们提到利用反向代理缓存资源,以改善网站性能。实际上,在部署位置上,反向代理服务器处于Web服务器前面(这样才可能缓存Web响应,加速访问),这个位置也正好是负载均衡服务器的位置,所以大多数反向代理服务器同时提供负载均衡的功能,管理一组Web服务器,将请求根据负载均衡算法转发到不同Web服务器上。Web服务器处理完成的响应也需要通过反向代理服务器返回给用户。由于Web服务器不直接对外提供访问,因此Web服务器不需要使用外部IP地址,而反向代理服务器则需要配置双网卡和内部外部两套IP地址。

    浏览器访问请求的地址是反向代理服务器的地址114.100.80.10,反向代理服务器收到请求后,根据负载均衡算法计算得到一台真实物理服务器的地址10.0.0.3,并将请求转发给服务器。10.0.0.3处理完请求后将响应返回给反向代理服务器,反向代理服务器再将该响应返回给用户。

    由于反向代理服务器转发请求在HTTP协议层面,因此也叫应用层负载均衡。其优点是和反向代理服务器功能集成在一起,部署简单。缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

   浅总结:负载均衡指的是多个服务器共同完成一件事情,核心是“分摊压力”。Nginx实现负载均衡指的是将请求转发给服务器集群。Nginx默认处理负载均衡的方式是“轮询”,我们可以通过weight来调整权重。

    



推荐阅读
author-avatar
露絲瑪麗蓮夢露_533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有