00:01
大家好,欢迎大家继续收看上硅谷的Linux云计算视频,我是刘川老师。那么本节课呢,我们继续来讲一个和NGS相关的一个,呃,面试问题,OK,首先呢,我们来看一下题目。那这个题目呢,考察的是我们NG的一些模块,以及模块对应的一些功能。大家都知道我们的阿帕奇和N这两个服务呀,它对应的呀,都是把很多功能写成了独立的模块,那这个呢,会方便我们很多的这种人员啊,来进行对N配置的时候很方便的去。配置NX的配置文件以及它的某些功能。并且呢,平常我们在不使用某些模块和功能的时候,我们就可以取消掉对应的一个调用就可以了,所以说它的部署和维护会非常方便那。我们就给大家写几个相对比较典型的有代表性的这种模块,然后呢,提供给大家这样的一个。这个一个怎么说呢,一个帮助大家去面试的时候,如果遇到类似的问题,大家一定要记得去找相关的这种什么。
01:08
有代表性的典型的来进行编写,那这个地方呢,我可以给大家举一个之前的例子啊。这是一个反向的案例啊,OK,那之前呢,有一个学员去面试啊,面试题目中呢,有这样一个题目,那就是请写出啊,你最常用的几个这个。比较重要的Linux长meaning,那这个时候呢,这个哥们啊,就非常实在啊,就开始写啊,写什么呢,大家估计应该能猜到啊,写了什么LS,嗯,CD啊,PWD啊,什么等CP啊。什么什么MV写了一堆,这玩意儿写大约十来个,OK。那这个时候呢,其实你会发现他写了这些东西之后啊,没有任何用处,为什么呢?这些命令都太基础了,根本体现不出你对Linux掌握的一个水平的深度,有哪一些,那这个时候呢,你写的时候,你可以写一些比如说资源查看命令啊,某些服务的管理命令啊,你可以把命令写的稍微全面和长一点,以此呢,使用这样的方式来体现你对。
02:15
某一个知识点所掌握的深度,否则你光写这个东西,别人可能就觉得你可能只是对Linux有个简单了解,那注意啊,这是一个反面案例,不要这样写啊,甚至我还见过有写命令,写什么CD啊。CD。点点啊CD。第二。CD杠。CD波浪号。等等,写了一堆这东西,你想想,写这东西是没有意义的啊,OK。好了,我们来看一下关于N几级的几个常用模块啊,OK。呃,这个题目呢,属于一个服务优化类题目。第一个模块呢,我们叫做HTTPSSL。这个模块呢,它的全称在官方叫。
03:03
这样的叫。NGX杠。HTTP。Is SL杠。这是它的全称,几乎NG所有模块前面都会对一个,都会带一个叫NGX杠的,但是我们实际在这个配置过程中呢,我们只需要写HTP-SSL-mode就可以了。这个模块的特点呢,这个非常重要,大家都知道我们这个生产环境的话,目前啊这个。就是网站上带有这种支付功能和交易功能的非常多,那但凡涉及到支付功能和交易功能,甚至有些这种用户注册功能的,我们一般都要对用户和这个服务器端进行数据传输的这个过程进行加密啊,进行加密,但是默认情况下呢,我们的HTTP协议在传输过程中是。
04:00
服进行任何加密的,你可以理解为就是用户通过HTP协议访问服务器的时候,这个过程中传输的所有数据都是不加密的,那这个时候很危险,很容易泄露掉我们的这种支付的相关信息,那。由一种原因导致呢,我们就有了一种更新的协议,叫做HTTPS协议,那这种协议呢?实际上就是结合了我们的SSL模块实现的一种在传输过程中加密的一种功能。啊,加密的一种功能。而我们提供加密功能的就是这个SS模块。同样,NG它自带这个模块,但是并不开启。如果你想让我们的这个NG工作时使用S4模块,那必须要在编译安装时就开启对应的模块。并且呢,我们还要在对应的配置文件里边去配置上对应的这个模块的开启功能,那再一个。只要你开启了对应的SM模块,就意味着你要使用HTPS协议了,那对应的HTTP的协议和HTTPS的协议所使用的端口也是不一样的,那HTTP用的是八零端口。
05:14
而HTPS用的是四。四三端口,那这个时候大家会发现一个问题,我们就需要让N几在监的时候,既监听我们的八零端口,又要监听443。并且。你像我们某些网站啊。在设置的时候啊,要求用户如果默认通过八零端口访问了,要求用户必须重新使用443建立连接之后才能进行登录,或者是这种交易的完成。由,因为很简单,八零不安全,443安全,所以说这个时候你会发现NG也会试图让用户的访问从八零跳转为443,那这个时候怎么来做呢?实际上用到的就是和阿帕奇当中类似的功能,那。
06:02
提示rewrite功能。啊,Rewrite功能,用重写功能将用户请求八零的请求转为让他请求四三就可以了。那也就意味着我们的。NG也要去做什么呢?虚拟主机啊,也要去做虚拟主机一个八零的一个网站模块一个。443的一个网站模块。并且在这个地方写一个跳转规则,当有用户访问八零时,默认的要求告诉用户,让他去访问443。以此达到一个安全的目的。第二个模块呢,是一个关于图片裁剪的模块。其实啊,这个模块呢,其实并不是必须要的,因为有些网站它。不允许用户上传这种图片资源,但是呢,我们如果有这种类似的网站需要用允许用户上传的话,我们在保存图片,或者说我们再把我们这个网站的图片保存的时候呢。
07:00
我们可以对图片做一个对应的裁剪来生成一个缩略图。以此来保证。我们的页面在进行这个传输给用户打开的时候是一个非常速的一个页面那。这个模块的作用是实现我们的一个图片裁剪。将超过指定规格的图片裁剪为指定大小的图片,生成缩略图,并且呢,由于生成缩略图图片变小了,我们的传输效率就保障了。只不过该模块呢,默认不开启,需要人为的开启这个模块。它并且呢,需要添加这个模块,再进行重新定义图片大小的这一个格式,那么可以在配置文件里边直接写image啊,然后呢,然后呢。高和宽。那说完长宽之后,它会自动按照长宽对应的来进行一个啊。图片大小的一个裁剪。
08:01
那我们这个模块就是这样的。那再一个就是刚才提到这个叫重写的模块。它的NG斯的这个地质出现,包括和阿尔法器功能上来说是一样的啊,是一样的,都是通过对应的一个正则表达式来进行完成一个条件的判断,然后来。这个编写一个对应的一个rules,就是对应的一个规则,比如说我们多域名的时候,或者更换域名的时候,或者HTTP跳转HPPS的时候,都要使用到对应的一个这种。Rewrite功能。那这个呢,我就不再详细讲了啊,我们之前讲阿帕奇的时候说过。那再一个叫http proxy mode。那对应的http proxim mode呢,实际上就是刚才我给大家看到那个什么那个另外那个PPT里的功能。就是这个功能。这个过程当中呢,说到了我们的NGS呢,是一个反向代理服务器啊,反向代理服务器,那它的反向代理功能默认。
09:02
注意,默认是开启着的,但是需要我们拿对应的模块来进行编写规则,来进行编写规则,比如说我们就可以通过http proxy来进行反向代理,那他反向代理的对象是谁呢?它反向代理的对象是这四个服务器。他所反向代理的对象是这样C4个服务器。好了,这是我们的这个反向代理模块。这个地方还提到了一句。这个反向代理模块一般情况下会和一个叫upstream的模块来一起使用,完成压力的分摊工作。比如说。你的反向代理代理了这四台之后啊,任务怎么来分配呢?需要借助另外一个模块来对进对这个后台的服务器进行一个这个任务的分配和管理。我们来看一下upstream模块。
10:14
那upstream模块呢?我们称之为叫负载均衡模块,一般和htp pro一起使用。那它的主要作用是用来进行任务的调度。以及任务的分配。分配原则可以通过对应的算法进行啊。可以对应的算法,比如说我们常见的有RR算法。R算法我们称为叫轮循算法。所谓的轮询,就是一人一个任务。分吧。如果有十个任务,一人一个。如果有十个人,有20个人物,那就是一个人有俩。如果有100个,那有一个人有十个,那人有十个,OK,这就是我们的一个。Upstream的一个功能,Upstream的一个功能。那这种。Proxy和upstream模块结合完成我们这种任务分配的这种。
11:02
什么呢?功能一般使用在什么模式上呢?一般使用在这种N和阿帕奇组成这种啊。高并发的规模之外,还可以使用在Java环境下,比如说用NG来代理我们mcat啊,代理tomcat。同样我也有一个图给大家看一下啊,我也有一个图给大家看一下。比如说这个图。这个图当中呢,我是把N几阿帕奇放到了同一个位置,也就是说我们既可以使用N几服务器,也可以使用阿帕奇服务器,以及对应的解析,P2P的环境也有解析啊,Java环境也有,那我们来看一下。当用户的请求发送过来之后啊,当用户的请求发送过来之后,如果是阿帕奇工作,比如说如果是lamp环境的话,那就是这样的一个数据过程。刚才是这样的一个数据过程。
12:00
然后数据包回去。L就是Linux a就是阿帕奇,M就是P,就是my circle,而P呢,就是PP了。是这样的一个过程。那这个时候你会发现阿帕奇和PP模块的连接方式是直接连接的。直连。他们之间是直连的。那如果是NG就是LNP的话。LNLNMMP的话。那它的处理这的用户请求进来,找到NNG克,找到自己的fast c Di,为什么?因为是一个动态请求,那由fastx cdi找到PP的FPM这个模块9000端口,然后再由它交由PP处理,然后PP再解析连接数据库。然后再数据包再回去,你会发现这个时候它的处理要稍微的啰嗦一点。要稍微落实点。OK。但是如果是论。这种静态资源处理,那就是数据包请求发过来,处理完毕发回去,和左右两侧根本没有任何关系,所以说在静态资源处理上,他们的这种处理方式没有啥区别,但是由于NX的处理方式是什么?
13:12
异步非阻塞导致恩克斯的并发能力要强于阿帕奇非常多。那再来看一下我们的。L。嗯。T。LT。LNTMJ。L。N。或者节省一下LTMG也行,但一般情况下都会有N啊,都会有N,那这个时候大家会发现呢,我们的用户请求是优先来到了NG服务器上,原因NG的并发能力强,由N接收到了用户请求之后,再通过反向代理模块把用户请求转发给他cat。如果是静态资源请求,Nnu处理完直接返回,不找他,如果是动态则找tomcat,由tomcat再把用户请求再干嘛呀,交给我们后台的Java解析器,JDK解析器,由JDK解析,解析过程中如果发现要连接数据库,则连接数据库,然后完事给用户回传。
14:16
所以说你会发现啊,不管是Java环境的处理,还是PP的环境处理,处理过程基本一致,那这个地方的重点就是说NG Co可以作为我们的一个反向代理服务器,也就是说。这个图的话,这个地方既可以是一堆阿帕奇服务器,又可以是一堆的tomcat服务器啊,又可以是一堆的tomcat服务器。都是可以的。OK,我们回到我们的这个面试题当中。那。类似的面试题呢,我们给大家出了两个啊,第一个是关于N是如何连接PP进行页面解析的,第二个呢,是关于N和tomcat之间数据传输的一个过程啊。啊,其实刚才我们通过看那两个图已经基本知道了,但是我们需要来总结一下。
15:01
第一个。连接PP的过程。首先。Fasti属于NX模块。PPFPM属于PP的服务。众所周知,P2P这个工具啊,它是一个解析器,它是没有服务的,你会发现我们平常在安装完PP之后呢,并不需要去启动P2P啊,并不需要去启动P,他也没有对应的服务,因为它是一个解析器,被别人调用来解析代码。你可以列为它是一个翻译器,但由于此次NG没法直连PP,导致我们需要找一个中间的一个连接点,那就是。P,有一个专门来干嘛?连接它的一个连接端啊,或者说你可以称为叫接口。叫做PP的FPM,它会开放一个9000端口,来提供给别人一个什么连接它的一个途径,那NG通过自身的fast c Di的这个工具连接FPM就连接成功到了P。
16:05
支持PP的这个方式。操作这么下边三个点,第一个NGS支持fast c功能才可以,那支持吗?默认支持。那PP编译是需要开启PPFPM这个功能那。这个默认是不开启的,也就是说PP安装默认不会安装FPM。需要你在安装PP时指定编译选项,安装PPFPM才可以,第三个在NX配置文件中需要添加匹配规则,那所谓的匹配规则就是正则表达式。如果匹配到。1.php。Dollar结尾,Dollar就是结尾嘛。如果匹配到1.pp结尾的请求,则交给fast c去找FPM。这就是通过正则表达式来匹配后缀来进行连接PP的一个方式。
17:00
OK,这就是我们的。In连接pap的过程。那再来说第二个问题,第二个问题就是描述N和tomcat之间数据传输的过程,OK?很简单啊,很简单,其实就是刚才那个图竖起来了而已,我们其实只需要看这一半就可以了,至于这一半我们暂时还讲不到这个,等我们后边讲MY那个服务的时候就会讲到它了。这个时候呢,用户请求进来之后,由NG代为处理静态请求,如果静态请求处理完了直接返回,如果是动态请求,则由NG反向代理和负载均衡到两个CA上。就可以了,他们的数据传输过程是这样的,很简单啊,数据包请求进来,静态的直接回去。数据包进来,如果是动态的,交给tomcat当开处理完成之后返回,再返回用户。这就是我们的。阿帕奇和呃N和tomca的一个数据处理的一个过程,这样数据处理过程。
18:02
那至此呢,我们NG相关的这个面试题啊,也就讲完了,OK,那。相关的一些配置呢,在我们的这个呃,官方放出来的免费视频当中都有包括对应的一个这个我们的这个呃。文本文档,实验文档啊等等,包括我之前的那些PPT都在里边,如果大家有需要的话,可以去关注我们的公众号,然后下载对应的视频来进行一个学习和查阅,OK。那我们本节课就讲到这儿,我们下节课再见。
我来说两句