00:01
大家好,欢迎大家继续收看上硅谷的Linux云计算视频,我是刘川老师。那么我们上节课呢,在讲N之前呢,讲了一下我们和N相关的一些概念啊。同步异步有我们的阻塞非阻塞,还有我们的多路复用,以及我们的NG克斯实际的一个啊运行原理OK。那么本节课呢,就来详细讲解一下我们的NOK,首先N第一个内容就是N的一个概念和概述,OK,那N呢,我们又称为叫嗯。Agents,那这个东西呢,它是一个高性能的。HTP和反向代理的web服务器,那同时呢,还提供了啊r mapp pop3和SMTP,那一看这就是我们的邮件,比如说还提供了我们的邮件代理服务啊,那N呢,是由这个叫伊格尔啊。塞索耶夫啊。俄罗斯人啊,为他们国家的一个访问量第二的一个网站所开发的,他的第一个版本呢,是在2004年的啊,这个10月4号发布的0.1.0版本啊,大家会发现我们的NG克斯这个软件,它的年龄非常年轻啊,相比阿帕奇而言,他年轻多了啊,但是呢,NG克斯目前在这个我们这个互联网上的一个占用量还是非常大的,虽然远不及阿帕奇,但是由于它时间非常短啊。
01:22
他的这个呃,成长速度还是非常高的,OK。那NG是一款轻量级的外部服务器,外加反向代理服务器以及邮件代理服务器,那在我们的这个BSD-like协议下发送,并且呢,它的特点由于占用内存较小,并发量较高,所以导致这些年来逐渐的它的一个市场占用比越来越高。OK,那NG克斯的简介呢?讲到这,我们来说一下关于NG克斯一个工作模式,那工作模式这个地方要借助我们NG克斯的一个图解,我们来看一下。OK,那首先呢,是一个这样的图,这就是我们LNP当中的这个NG克斯和我们的PP的连接一个方式,那我们说过PP呢,有一个叫PPFPM的一个服务,然后呢,NG就是连接这个服务来进行。
02:15
找到PP进行解析的,但是NS连接这个PPFPM的一个工具模块,这个模块叫fast c,叫fast c Di。OK,用户请求。然后NG的进程处理,然后N交给啊。Fast c模块去找FPM服务,然后再找PP,然后PP得找MYSQL,是这样的一个过程。是这样的一个过程。OK。那法案代理这个我们先不说啊,我先来说一下关于这个过。那关于这个过程。发色随斋PPFPMPP。NG想支持pip就必须N支持,虽然默认支持,默认就支持啊,OK。
03:01
然后呢,有时候需要开启那P2P编译是要开启FPM,这个在编译P2P的时候要开启,那再一个就是NG配件配置文件当中要添加上对应的匹配规则location啊,通过location来匹配啊。识别PP后缀,那这就是我们的一个。好了,这就是关于我们的一个N的一个,呃。呃,怎么说呢,它的一个这样的一个连接方式,NG克斯和我们PP的一个连接方式。然后呢,再一个就是我们恩吉克斯的一个图。下的图。OK,那我们上面这个就是啊,第一个就可以啊,拿第一个图来看就可以了,OK,那NG呢,有两种功模式,一种呢叫master worker模式啊,另外一种呢叫单进程模式,这个单进程模式我们简单做了解就可以了啊,那我们首先来看一下关于这个master worker模式,那关于master worker模式呢,是我们默认的一个模式,而是一个默认的模式,NT在启动之后呢,会启动一个master进程,然后呢会启动至少的一个worker进程,也就是说一个主进程或者叫手部进程,其他的都是工作进程。
04:14
然后呢,这个主进程,Master进程主要负责来管理这些work进程的。那所有。对用户的请求的处理的进程都是work进程,OK。那你看一下我们的master进程,是用来加载配置处理请求信号管理worker进程啊。用来进行对worker进程启动、杀死监控、发送消息和信号等等的。那worker进程负责处理具体的业务逻辑,也就说用户的请求。对于外部来说,真正工作的是啊,对于外部人员来说,我们看不到master。那生态环境中一般使用这种模式啊?这种模式的特点,我们几下几个特点,第一个是关于稳定性比较高啊。只要有一个worker存在着,那就可以对外提供的服务。即便master出现了问题,那worker也可以正常工作。
05:05
并且一个worker进程挂掉,Master会立刻再启动另外一个worker。去干嘛呀?保证我们有足够的worker进程来进行用户请求的处理,那降低了服务中断的这种几率和概率。OK,那再一个就是呃,恩尼克斯这种模式呢,呃,和我们Linux操作系统对CPU的这种亲和度比较高一些啊,亲和度比较高一些,充分利用了多核CPU啊,这种多线程的这种模式。提升了我们这种什么。线程处理用户请求的效率,OK?提升了多路复用的效率。然后再一个就是处理信号配置,重新加载以及升级我们服务的时候,可以尽少的减少对服务的中断。甚至就是不用中断啊,甚至不用断,我们一般称之为这种不中断服务的重启或启动方式,称之为叫热重启或者叫热部署啊。
06:07
OK,那这是我们这个工作模式,其实这个图上很简单,就是NG一个主程序,然后呢,子子进程就是工作进程,叫worker进程,然后来处理用户请求。其实这个东西和我们之前讲那个,呃,阿帕奇的时候,我们找一下啊。阿帕奇当中的那个工作模式很相似啊。就是这个啊,就是这个啊,主进程子进程,然后呢与线程进行处理。和这个很相似啊,OK。这样一个模式。然后呢,这个关于它的一个单进程模式,这个简单做了解啊,单进程模式我们一般在这个呃,开发阶段和调试阶段才使用,生产环境是不会使用的啊,主要原因什么呢?主要原因是它是一个单进程的,就说只有一个进程,不管是N的这个呃,程序加载啊,配置加载啊,升级啊什么的,还是这个用户的请求都会由他来这个处理,那这个时候呢,就不太方便,我们进行这个N几的一个调试,以及万一有一个N几斯进程。
07:11
停止工作或出现故障了,那这个时候NT就挂掉了,就。就没法实现快速的这个用户的请求,也就是说可能会造成一些服务的中断,所以说这种单进程模式啊,就是简单了解一下啊,我们很少使用。OK,那么接下来的第三个内容就是讲一下我们的这个配置文件的一个结构,那这个地方我是把一些相对比较重要的配置文件的选项拿出来给大家解释了一下啊,OK,那这个地方我们来可以看一下啊,那由于我们下边有实验,所以说我提前给大家准备好了我们之前安装的那个呃,源码包的LNNP环境啊。是在CS6下安装的那个啊,六下安装那个LMP环境,以它作为基础来进行讲解的,我们这个呃,内容OK。那配置文件当中呢,相对比较常见的第一个就是user user后边呢,写我们这个关于N,关于N运行所使用的用户和组的身份。
08:07
那根据你这个在进行编译NG的所时候,所指定那个去选择一下,比如说你编译的时候指的是使用那个NG用户和NG组,那这个地方你就选这个就可以了。然后呢,下面有两个要进行记住的一个选项,一个叫worker,一个叫worker。Worker pro指的是开启的worker pro的数量就是工作进程的数量,这个地方呢,可以使用auto。呃,这个地方可以使用auto auto的话就是自动进行设置,那这个自动一般根据什么自动根据CPU的核心数来设置,当然我们也可以是人为手动指令,比如说2468呀,这种指令方式都可以。然后呢,下面这个叫指的是一个工作进程能够处理的最大的用户连接数量。
09:03
啊,一个工作进程能够处理的最大的连接数量,那我们要想计算这个NG服务器最大能处理的用户数量,怎么计算呀,以。就行了。啊,就行了。那比如说如果是,呃,我们有四个CPU核心的话,就是四乘以51200,但是这个地方默认不是五万一千二是后来我改的,那就是四乘以它。是20万的并发量。OK,那这就是我们计算N克斯的一个,呃。并发量的一个计算方式。好了,接下来一个叫llo,这个llo指的是什么呢?NG的错误日志,这个指的是全局错,因为N这个服务如果出现错误记录到哪啊,记录到这个位置啊。再一个就是PID文件保存位置。PID文件保存位置。然后再一个就是events,这个events下边要指定你使用的是什么模型啊,我们这个地方可以使用Apple模型啊,使用Apple模型多路。
10:06
复用的模型来提高NG的一个这种工作效率。注意,这是一个标签,标签,不要忘记标签的。括号的开头和结尾,再一个就是在这个N配置文件当中啊,呃,几乎所有的选项的结尾都要有什么。分号结尾啊,都有分号结尾,没有分号会报错的啊,没有分号会报错的。然后下一个标签叫HTTP标签,这个标签指的是网站参数优化的一些标签。可以写很多的网站参有法,比如说一些什么用来进行压缩的呀啊,用来进行一些缓存的呀,啊这个在我们讲阿帕奇的时候提到过一些,比如说如何让某些这个内容不记录到日志呀啊,如何让某些内容在传输的时候进行压缩呀,如何让某些东西在用户加载之后缓存到用户本地而不再重复传输呀,那些网站参输的。
11:06
优化信息就写到这个位置,但这个地方我没有一一列啊,给大家知道这个地方放什么就行了。接下来HTTP标签里边包含了另外一个标签叫server标签,这个server标签就代表着一个网站的配置信息,一个server就是一个网站。啊,一个server就一个网站,OK,那大家回想一下,之前我们在阿法奇当中讲过一个概念叫什么叫虚拟主机,那如果我想让N几克斯来配置虚拟主机的话,其实很简单,有多个server,每一个server一个是一个网站,那多个server不就是虚拟主机了吗?那这个地方需要大家注意的是什么呢?需要大家注意的就是每个server必须要是平行的在同一个,也就说在这个HTP标签里边每增加一个server,平行的server就相当于多了一台虚拟主机。就相当于多了一台虚拟主机。
12:02
OK,这就是我们进行呃,这个NG后续实验的时候的一个操作的一个东西。然后再来说关于server标签内的内容,Server标签里边首先有一个概念叫listen啊,就是我们这个,呃,我们这个网站监听的端口是什么啊。然后再一个就是root,这个root呢,其实就像阿帕奇里边那个叫document root的那个功能,Document root是绑定该服务器或该网站的默认网页路径,那这个地方就是你看这个地方绑了个叫HTML的。猛一看很多人看不懂,但实际上这个地方写的是什么?写的是相对路径,它前面实际上是什么?由N几克斯的主路径呢?比如说这个地方的root,实际上后边写的是跟下user local n下的atl。就这个意思,然后再一个就是关于我们这个网站的域名,我们可以用server_name的方式,后边跟上面对应的域名OK,使用这样的方式来确定。再一个就是我们的index,这个index指的是当我们访问到这个服务的呃,这个网站的时候,默认加载哪一个页面,你写index htm就是默认加载index HT面。
13:12
你写index.php就是加载index PHP,那谁在前边优先加载谁。啊,谁在前面优先讲的谁这个地方涉及到一个优先级的问题,当然这个在我们前面讲源码安装lamp的时候,其实已经呃简单的提到过了啊OK。再一个就是access log access log指的是什么?访问日志的保存位置,那这个地方也是写一句相对路径啊,也是user log NG格下的log下叫access.log有所区别的是阿玛奇当中的日志叫access-log_log和error_log而在里边叫access dialog和error dialog。当然还可以写些其他内容,但是每一个选项结尾都要有一个分号,结尾完了没有?
14:01
还有一些其他标签。注意其他标签。其他标签都是包含在server标签内的,你看这个地方我server标签没有结束呀,我是在server标签里边写了什么匹配标签叫什么叫location。Location是用来进行具体请求内容的匹配的,比如说我想用来匹配,如果用户请求的是PP怎么办?那就是location,如果是以点PP结尾的,不管前面什么内容,点星的作用是不是任何内容啊。只要是1.pp结尾的,我就怎么怎么怎么样,这个在我们的主配人员里边也是有的,这地方我就没有全写上了,没有全写上了。OK,还有还有一些其他,比如说location,其他的一些跳转规则啊,比如说我们之前在阿帕奇当中讲过域名跳转等等,那其实在N里边也可以实现,就直接在location里边写rewrite规则就可以了。OK,然后呢,至此会发现我们的location标签,一个标签俩括号,一个标签俩括号,这个地方多出来一个括号,这个括号就是上边我们那个server标签的括号。
15:05
大家会发现这个serve标签下边又多了一个serve标签,那两个serve是平行的,我说过第二个server就是虚拟主机。那第二个思路就是虚拟主机,OK,那至此呢,我们的这个NG克斯配置文件里边啊。一些最常用的,最重要的一些选项就到此就结束了,这样到此就结束了,OK,好了,我们在了解了这些内容之后,我们其实就可以来接着进行一些NG克斯一些相关的一些实验了,相关的实验了。OK,这有几个注意事项啊,首先第一个注意配置文件中结尾要有分号作为结尾,切记,一定要切记,每次实验修改完成之后,都需要重启NG才生效,重启NG的方式可以是什么?可以使用PKL杠、hup NG,这个就是我所谓的那个热重启啊,热部署。啊,在不停止掉NG的情况下,让NG克斯的最新的配置生效。
16:03
好了,我们简单来看一下我们这个接下来的N基实验,首先啊,N基克斯的第一个实验叫NG克斯的状态统计啊,叫N几克的状态统计。然后呢?嗯,N状态统计和我们阿帕奇当中的一个功能很相似,它状态统计的作用是来看一下在指定的时间内有多少个用户连接请求进来,处理了多少个用户连接请求,OK,那这个其实在我们安装nnus的时候呢,我们已经提前做了一些这个准备,那就是我们编译进去了一个中文态统计的模块。我们当时安装engines的时候,指定了一个叫杠杠位,S-HTP,杠杠styles,杠mode。这个模块的作用就是一个,呃。呃,状态统计的模块。然后呢,我们只需要做什么呢?只需要修改NGP文件,在里边写一个什么呢?在要进行访问的那个server,就是网站要进行访问的那个server中增加一个location。
17:06
Location内容写什么呢?Location内容写你要用来访问的关键词啊,你要用来访问的关键词,然后下边是开启这样统计,然后是状态统计的访问。Off,不记录到日志当中。状态统计的访问不记录到日志当中。这就是我们要在配置文件中修改的内容,OK,我们来修改一下配置文件。为什么修改一下跟一下use local下的,KF下的。OK,我们当前呢,就一个server,所以说在这个server里边找一个位置写就行了。我们。和这个平行就可以了啊。跟平行就可以了。把我们要这个使用的location这个复制过来,然后复制过来。这个location的一个标签呢,叫location。呃,叫杠studio啊,注意是下划线啊。然后下边呢,是开启状态统计功能,然后再一个就是状态统计的信息不记录到我们的日志当中。
18:07
人统计的协议不记录到我们日志当中。这个界面卡住了。好吧,我把这个窗口关掉啊,这个。那大家都知道,我们这个如果说正在编辑一个文件的话,这个正在编辑文件的进程关掉的话,会产生交互文件啊。CD到。C级到跟下user local Co模想。杠A一下。会产生交互文件啊U看到没有。那个交互文件,把交互文件删掉啊。RM-RF把点N即可。VM来编辑我们的N几。
19:01
还是在这个地方啊。哦,一下。简单进行一个缩进就可以了。好了,其他就不写了啊,其他就不写了,保存退出一下。然后这个时候呢,我们要先来进行NG克斯配置文件,正确的语法的一个这个这个验证啊,有一个选命令叫NG克斯。钢铁。没有命令吗?我们链接一下啊。LN-S把根下use local n下的S并下的啊。N链接到根下user。Local艾滋病。这样N极就可以执行了。N极克。OK。我们的语法没有问题,然后来进行一个NG克斯的一个重启啊。
20:00
厦门可以使用。Service ngx。重启一下就可以了。就是充钱费了。然后呢,我们通过浏览器来访问一下,那么。192.168.88.10。可以访问到这个啊,但是我们要访的是NGX。杠stat u。这就是状态统计的信息啊,这就状态统计信息,我们来简单解读一下状态统计的信息有什么东西啊?Actives指的是当前活动的连接数量,就是当前有多少个连接数量连接到我们的服务器上。Server accept had request,这个是已经处理了的连接数量。
21:03
最下面三个数字依次表示的是已处理的连接请求,成功的TCP的请成功TCP握手的次数请求,已处理的请求的次数请求。这里边儿的信息就。代表了这个意思啊,这里边信息代表这个意思,好了,这就是我们的N几一个状态统计的一个信息,再刷新一下。TCP握手一次,但是处理了两次请求很正常,连接之后TCP连接没有断开啊,但是我们发起了两次请求,这个很正常。这就是关于我们的一个。吉斯的状态统计的一个。一个实验啊,这个实验比较简单啊,OK。好了,我们接着把第二个实验也做完啊,接着把第二个实验也做完。第二个实验叫什么呢?第二个实验叫目录保护功能,那第二个实验叫目录保护功能。原理和阿帕奇里边目录实验保护功能一样啊,我们就可以接着上一个实验接着来做啊,接着上一个实验来做。
22:02
比如说我们的这个状态统计这个页面并不是所有人都可以访问。啊,并不是所有人都可以访问,我们想把这个状态统计的这个给它保护起来啊,状态统计这给它保护起来,怎么保护起来呢?直接在刚才状态统计的那个模块当中啊,直接在刚才状态统计的那个老黑当中加上认证。Also basic also basic,一个是also basic是提示信息,一个also basic指的是反尔文件位置。反文件位置是什么?就是密码账户密码文件位置。我们把这两句话。加入location当中。这个location,在这个location当中,我们再加内容就可以了。
23:06
保存一下,加完之后记得去检查一下配置文件的问题啊,N次刚替一下没有问题,没有问题的话,注意我们光把这个对应的参数选项加上了,但是我们还没有生成这个文件,人家要这个文件我们去哪找啊,没有怎么办?我们生成一下,生成的时候需要一个命令叫HT帕萨D,这个命令是阿帕奇的命令啊,所以说对吧。安装一下阿尔法七,让他帮我们产生这个命令,然后我们就可以来创建,OK。好了,我们操作一下啊。要么港湾。Install一下HTTP。我们只是为了借你的命令,不是需要你啊,所以说装上它之后并不需要启动它啊,OK。执行命令创建就可以了。
24:11
OK,执行HT-C-C就是创建,如果要再加就是什么。再加的话就不是杠C了啊,再加的话就不是杠C了,而是杠。然后创建的位置是user lock nnu下的HTL下创建的文件名叫HT plus wd.inx这个文件名一定要和刚才配置文件里边写的一样,然后你再写一个要以什么样的一个用户去登录,然后再给这个用户设置密码,123456 123456,这搞定。由于刚才配置文件做了修改,所以说我们要重启N几啊,然后再来进行测试,重启N几感叹号ser service,用service,用ser关键词调用之前执行过的service restart重启了,然后再来访问。
25:05
192。大家发现这个时候不行了,连不上了,为啥多了一个需要进行身份证那。这个就是那个身份证。我们刚测的用户是不是叫user密码是不是叫123456啊OK,登录成功。好了,这就是我们进行。啊,目录保护的一个功能,那这就是心。用来进行目录保护的一个功能。然后呢,我们还有一个实验啊,也是接着上一个实验完成的啊OK。那下一个实验是基于IP的一个身份证有访问控制啊,接着上一个实验完成就可以了啊。这也比较简单,咱我们刚才的状态统计的location当中写along和ni就可以了,比如说along along along1921688.1,那就是允许8.1进行访问。好得,那19216888.0就不允许其他人访问,仅允许八八点一来访问,就这个意思,那就这个意思啊,我们再来写一下,这个相对比较简单一些啊。
26:13
还是那个。然后还是在同样的位置。好了,写完之后我们来保存退出一下,检查配置文件问题。NG克斯杠T。没问题,感叹号一二,重启N,然后我们通过Windows来访问一下。开正常还是可以访问的,没有问题的,由于刚才我们已经认证过了啊。是没有问题的,但你看到我通过Linux来访问1LINKX。
27:01
然后直接访问幺九二点幺六八点八八点。个幺零。啊,也能访哦对,现在我们是从Windows访问过去的啊。我们是本身,呃,自己访问自己,我们找一个其他的主机啊,找一个其他的主机,我现在还是通过Windows换过去啊,找一个其他主机。Curl看一下啊。Eli斯也行啊,Eli克斯。幺九二点幺六八点八八点幺零下的。NGX。STATS。访问失败了,403,为什么就是被拒绝了,然后呢,我们看一下放开之后的状态啊。修改配置文件,把这个。Deny,去掉去掉,再保存退出。再重启一下。再来试一下ELIS。
28:02
看就可以了。啊,有一个登录的一个界面,User密码123456看。这就是这个关于呃。防卫控制的一个实验啊,防御控制的实验。OK,那么这节课就讲到这,我们这节课讲了三个实验,外加讲了一下关于NG的一些,呃,配置文件,还有NG的一些工作模式,以及N一个概述,好了。这节课就到这儿,我们下节课再见。
我来说两句