nginx基本概念以及什么是正向代理,反向代理,负载均衡,动静分离

什么是nginx

    从百度百科我们能了解到,Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,它是一个俄罗斯人所开发的,特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,也是为性能优化所开发的,有报告表明,它能同时支持高达50000个并发连接数,它支持热部署,不需要停止服务的情况下发布自己的应用,也可以7X24小时不间断运行,不宕机的特点,受许多互联网大厂的青睐,比如百度、京东、新浪、网易、腾讯、淘宝等。

 

nginx能做什么

    和一般web服务器一样,他能接收我们的请求,处理请求,把结果返回给我们,还可以实现反向代理,负载均衡,动静分离。

 

什么是正向代理

    我们可以把互联网理解为一个庞大的资源,当我们访问这些资源的时候,需要代理服务器,这种代理服务就是正向代理,举个例子,当我们想访问外国的某些网站时,由于某种原因,我们直接访问不了,这时就需要在浏览器中设置能访问的代理服务器,先把请求发送到代理服务器上,告诉代理服务器要访问的网站,代理服务器去访问这个网站,然后把结果返回给我们,这种行为就是正向代理。

 

什么是反向代理

    就是当我们想访问互联网中某个网站时,不需要在浏览器中设置任何代理服务器配置,就可以访问我们想访问的网站,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据,返回给客户端,反向服务器对客户端代理是无感知的,这里的反向代理的对象是访问目标对象的服务器,暴露反向代理服务器,隐藏真实服务器ip。

    举个例子,当我们配置了tomcat服务器1,tomcat服务器2等,端口为8001,8002,这里的8001,8002端口不暴露给客户端,这里配置一台反向代理服务器nginx,端口为9001,把9001端口服务器暴露给客户端,客户端先访问9001的nginx,在由nginx把请求发送给端口为8001,8002的tomcat服务器

 

正向代理和反向代理区别

    它们俩的本质区别就是,当访问互联网的资源是,正向代理就是需要在浏览器中设置代理服务器配置,反向代理就是不需要在浏览器中设置代理服务器配置。

 

负载均衡

    理解负载均衡之前,我们先简单了解下互联网的发展史,在2000年左右,互联网刚刚在中国兴起的时候,当时一个网站的访问量还不是很高的时候,把一个应用程序和数据库部署在同一台机器上,基本上一台服务器就可以处理所有的请求,这也称之为单一架构,当2003年左右,互联网开始普及以后,随着网站的访问量和数据量逐渐增长,业务逐渐复杂,单一的服务器已经满足不了暴增的并发量,这是多服务器的概念就出现了,把同一个应用程序部署在多台app服务器,配置多台db服务器,但怎样调度这多台服务器运行呢,这是负载均衡的概念就出现了,有兴趣的同学们可以看看现在互联网大厂的架构演变史。

    所谓的负载均衡就是单个服务器解决不了高并发,我们增加服务器的数量,然后将客户端的请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器。

    举个例子,一个网站有两台tomcat服务器,这时客户端来了6个请求,请求先通过刚才讲的反向代理服务器,反向代理服务器,把这个6个请求平均分到两台tomcat服务器来处理请求,每台服务器处理3个请求,处理完请求,在把处理结果或者数据返回给客户端,反向代理服务器把请求平均分给2台服务器的动作就叫做负载均衡。

 

动静分离

    为了加快网站的解析速度和页面渲染速度,可以把动态页面和静态页面由不同服务器来解析,降低原来单个服务器的压力。有对传统的javaweb项目了解的话,当我们要发布一个应用程序到tomcat服务器时,把html,css,javascript等静态资源和动态资源,如servlet等全都放到tomcat中,不管我们访问静态页面和动态页面,我们都要通过tomcat,这时,对tomcat带来很大的压力,这是就可以使用nginx来解决将你的静态资源和动态资源进行分开部署,当客户端请求静态资源时,nginx将请求转发到静态资源,当客户端请求动态资源时,nginx将请求转发到动态资源。

 

    今天讲解了nginx的一些概念,以后的文章,我们就来动手操作一下,反向代理,负载均衡和动静分离等。

 

你可能感兴趣的:(nginx,nginx,分布式)