Nginx课件(详细完整).pdf
- 文档编号:18938918
- 上传时间:2024-03-02
- 格式:PDF
- 页数:78
- 大小:7.38MB
Nginx课件(详细完整).pdf
《Nginx课件(详细完整).pdf》由会员分享,可在线阅读,更多相关《Nginx课件(详细完整).pdf(78页珍藏版)》请在冰点文库上搜索。
NginxNginx第一节课第一节课课程目标课程目标1.对Nginx有一个全局的认识2.知道Nginx是什么3.知道为什么要选择Nginx课程大纲课程大纲好了言归正题,我们开始第一课Nginx的应用,通过本堂课主要是让大家对于Nginx有个全面的认识,了解Nginx是什么,为什么要选择Nginx,什么是什么是NginxNginxNginxNginx的企业级应用架构图的企业级应用架构图1.单体架构2.常见的普通架构3.常见的普通架构技术选型通过上面的常用系统架构让大家明白,Nginx是一个我们在实际项目架构中有非常重要作用的组件,很有学习的必要!
什么是什么是NginxNginx在了解Nginx之前先来看看Nginx的竞争对手Apache、Lighttpd、Tomcat、Jetty、IIS,它们都是Web服务器,或者叫做WWW服务器,相应地也都具备Web服务器的基本功能:
基于REST架构风格,以统一资源描述符(URI)或者统一资源定位符(URL)作为沟通依据,通过HTTP为浏览器等客户端程序提供各种网络服务。
然而,由于这些Web服务器在设计阶段就受到许多局限,例如当时的互联网用户规模、网络带宽、产品特点等局限,并且各自的定位与发展方向都不尽相同,使得每一款Web服务器的特点与应用场合都很鲜明。
Tomcat和Jetty面向Java语言,先天就是重量级的Web服务器,它的性能与Nginx没有可比性。
IIS只能在Windows操作系统上运行。
Windows作为服务器在稳定性与其他一些性能上都不如类UNIX操作系统,因此,在需要高性能Web服务器的场合下,IIS可能会被“冷落”。
Apache的发展时期很长,而且是目前毫无争议的世界第一大Web服务器,下图是截至2019年12月web服务器的排名通过图片我们也能很明显的看到Apache在过去20多年里的霸主地位,Apache有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的Web服务器。
在Apache服务器上,如果有数以万计的并发HTTP请求同时访问,就会导致服务器上消耗大量内存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量CPU资源,并导致HTTP请求的平均响应速度降低,这些都决定了Apache不可能成为高性能Web服务器,这也促使了Nginx的出现。
上图也能看出Nginx成长非常迅速。
2019年的市场份额也占据了1/3.在了解了Nginx的竞争对手之后,相信大家对Nginx也有了直观感受,下面让我们来正式地认识一下Nginx吧。
来自俄罗斯的IgorSysoev在为RamblerMedia(http:
/www.rambler.ru/)工作期间,使用C语言开发了Nginx。
Nginx作为Web服务器,一直为俄罗斯著名的门户网站RamblerMedia提供着出色、稳定的服务。
IgorSysoev将Nginx的代码开源,并且赋予其最自由的2-clauseBSD-likelicense2许可证。
由于Nginx使用基于事件驱动事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化模块化的设计和自由的许可证自由的许可证使得扩展Nginx功能的第三方模块层出不穷,而且优秀的设计带来了极佳的稳定性,因此其作为Web服务器被广泛应用到大流量的网站上,包括腾讯、新浪、网易、淘宝等访问量巨大的网站Nginx是一个跨平台跨平台的Web服务器,可运行在Linux、FreeBSD、Solaris、AIX、MacOS、Windows等操作系统上,并且它还可以使用当前操作系统特有的一些高效API来提高自己的性能。
例如,对于高效处理大规模并发连接,它支持Linux上的epoll(epoll是Linux上处理大并发网络连接的利器)、Solaris上的eventports和FreeBSD上的kqueue等。
又如,对于Linux,Nginx支持其独有的sendfile系统调用,这个系统调用可以高效地把硬盘中的数据发送到网络上(不需要先把硬盘数据复制到用户态内存上再发送),这极大地减少了内核态与用户态数据间的复制动作。
种种迹象都表明,Nginx以性能为王。
为什么选择为什么选择NginxNginx为什么选择Nginx?
因为它具有以下特点:
1)更快更快这表现在两个方面:
一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。
2)高扩展性高扩展性Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。
因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。
3)高可靠性高可靠性高可靠性是我们选择Nginx的最基本条件,因为Nginx的可靠性是大家有目共睹的,很多家高流量网站都在核心服务器上大规模使用Nginx。
Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。
4)低内存消耗低内存消耗一般情况下,10000个非活跃的HTTPKeep-Alive连接在Nginx中仅消耗2.5MB的内存,这是Nginx支持高并发连接的基础。
5)单机支持10万以上的并发连接这是一个非常重要的特性!
随着互联网的迅猛发展和互联网用户数量的成倍增长,各大公司、网站都需要应付海量并发请求,一个能够在峰值期顶住10万以上并发请求的Server,无疑会得到大家的青睐。
理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶。
当然,能够及时地处理更多的并发请求,是与业务特点紧密相关的6)热部署热部署master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以在724小时不间断服务的前提下,升级Nginx的可执行文件。
当然,它也支持不停止服务就更新配置项、更换日志文件等功能。
7)最自由的BSD许可协议这是Nginx可以快速发展的强大动力。
BSD许可协议不只是允许用户免费使用Nginx,它还允许用户在自己的项目中直接使用或修改Nginx源码,然后发布。
这吸引了无数开发者继续为Nginx贡献自己的智慧。
以上7个特点当然不是Nginx的全部,拥有无数个官方功能模块、第三方功能模块使得Nginx能够满足绝大部分应用场景,这些功能模块间可以叠加以实现更加强大、复杂的功能,有些模块还支持Nginx与Perl、Lua等脚本语言集成工作,大大提高了开发效率。
这些特点促使用户在寻找一个Web服务器时更多考虑Nginx。
当然,选择Nginx的核心理由还是它能在支持高并发请求的同时保持高效的服务。
如果Web服务器的业务访问量巨大,就需要保证在数以百万计的请求同时访问服务时,用户可以获得良好的体验,不会出现并发访问量达到一个数字后,新的用户无法获取服务,或者虽然成功地建立起了TCP连接,但大部分请求却得不到响应的情况。
最后通过以上的介绍相信大家对于Nginx应该有一个充分的了解,而且也对Nginx产生了浓厚的兴趣,但别急,在具体开始动手完Nginx之前我们需要再给大家介绍几个概念,好了,下节课见NginxNginx第一节课第一节课课程目标课程目标4.熟悉反向代理的含义5.熟悉负载均衡的含义6.熟悉动态代理的含义课程大纲课程大纲一、一、NginxNginx相关的概念介绍相关的概念介绍大家好,上节课我们给大家详细介绍Nginx,让大家明白了为什么要掌握Nginx,它能解决我们实际生产中的哪些问题,这节课我们就来给大家介绍Nginx中经常碰到了几个概念,也是Nginx最常见的几个应用场景,分别是反向代理,负载均衡,动静分离1.1.反向代理反向代理首先我们来看下反向代理,要弄清楚反向代理我们先来介绍什么是正向代理,通过对比的来介绍,相信你一定能非常轻松的搞清楚这两个概念。
1.11.1正向代理正向代理那么什么是正向代理呢?
我们通过举个例子来给大家介绍,比如你要访问Google网站,查询一些资料,但是因为一些总所周知的原因而访问不了,这时候你就会借助一些代理服务器来实现这个需求(你可以选择免费(不稳定)的或者收费的),具体有哪些我们就不过多介绍了,这不是我们本节课的重点,我们只需要在我们电脑上配置好代理服务器的信息,你就可以正常的访问Google网站,来满足你的需求了,在这个过程中,就是一个正向代理的模式。
我们来看下下图正向代理定义正向代理定义:
是一个位于客户端和原始服务器(originserver)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
客户端才能使用正向代理1.21.2反向代理反向代理好了,弄清楚了“正向代理”之后,我们来看下什么是“反向代理”。
反向代理的使用场景一般是这样的,我们有一个服务,比如是Tomcat部署的8081的一个web应用,我们不希望客户端直接来访问我们的服务,但是有要给客户端提供必要的服务,这时候怎么办呢?
这就有点像屏幕前的你既想做好事,但又不想别人知道,这时候你就可以一些代理机构(红十字会,韩红基金等)你献出你的爱心,这样你就达到了你的目的,这样站在被帮助者的角度,通过你的帮助解决了眼前的问题,但是并不知道是谁具体提供的帮助,只知道是通过代理机构完成的。
那么我们现在也可以这样,在我们的8081服务的外层再提供一个服务,客户请求我们在外层的服务,而这个服务再调用8081服务,这样客户实现的他的请求,也没有暴露8081服务,是不是就两全其美了!
通过下图我们来加深下理解反向代理定义反向代理定义:
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。
同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
正向代理和方向代理的区别:
(1)正向代理:
用户知道代理服务器,也知道目标服务器,并主动访问代理服务器
(2)反向代理:
用户并不知道访问的服务是真正的服务还是代理服务,同时也不关心是否是代理2.2.负载均衡负载均衡好了,接下来我们再来看下一个概念,“负载均衡”,什么是负载均衡呢?
我们来看看如下这个结构图,单个服务器的缺点也是一目了然,并发能力低,抗风险能力低,一个服务挂了整个系统就蹦了集群的好处是提供是了系统的并发能力,同时单个节点出现问题,并不会造成整个系统的不可用,但同时也增大了一些其他开销,比如事务的一致性等,此处我们不做过多讨论。
但是集群后的多个节点,到底哪个节点处理哪个请求就会显的比较凌乱,这时我们就需要对集群服务做出对应的管理。
这时我们就需要通过负载均衡服务器来解决这个问题。
如下:
负载均衡定义负载均衡定义:
英文名称为LoadBalance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行英文名称为LoadBalance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,有点像大堂经理,公司前台等。
3.3.动静分离动静分离好了,了解了上面两个概念之后我们来看下最后一个概念“动静分离”,那么什么是动静分离呢?
“动”和“静”分别是什么?
我们为什么要分开他们?
这就有点像牛郎和织女为什么要分开一样。
首先我们来看下动静分别指的是什么吧动-动态资源(jsp,servlet,ftl.)静-静态资源(html,js,css,jpg,png.)然后我们再来讨论下为什么要做动静分离,我们打开百度的首页,然后F12看看它的调试信息我们发现一个的请求实际上给百度的服务器发送了很多很多的请求。
里面很多是图片和js文件的请求。
而这类的请求资源一般是不会变动的。
只有少量的请求才是动态的,才会需要服务器处理对应的业务逻辑,操作相关的数据库,如果我们将这两类请求的资源都放在同一个服务器上,那么服务器要处理大量的静态资源的请求,又要处理少量的耗时的操作。
服务器的压力很大。
这时我们就可以考虑将静态资源部署在一个单独的服务器上,动态资源部署在另外的服务器上,这样相互不干扰,能很好的提高整个系统的性能。
动静分离定义动静分离定义:
是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。
到这儿我们就给大家把这三个概念给大家详细的介绍了,这仅仅是概念上面的一些东西,更多更详细的内容我们会在后面的课程中给大家一一呈现,下节课我就开始带领大家具体动手开始安装Nginx。
好了,本节课就到这里,下课。
NginxNginx第第三三节课节课课程目标课程目标7.掌握Nginx在Linux上的安装课程大纲课程大纲课程介绍:
上节课我们给大家详细介绍了三个概念,现在应该对”反向代理”,”负载均衡”及”动静分离”这三个概念应该比较清楚了,那么我们本节课就来给大家介绍下Nginx在Linux上安装操作。
NginxNginx安装安装安装环境准备:
centos7.0安装的Nginx版本:
nginx-1.14.0.tar.gzNginx下载地址:
http:
/nginx.org/download/NginxNginx的安装的安装1.1.第一种方式第一种方式我们首先来看下官方网站给出的在centos上的安装方式。
注意:
安装完成:
启动:
直接输入nginx即可浏览器中访问测试:
默认端口80这样就安装成功了,那么nginx安装的相关文件放置在哪了呢?
比如nginx.conf配置文件以及对于的启动文件在哪儿呢?
至此第一种安装方式完成nginx.conf配置文件(安装目录)/etc/nginx/nginx.confNginx启动脚本/etc/sysconfig/nginxNginxlog目录/var/log/nginxNginxpid文件/var/run/nginx.pid2.2.第二种方式第二种方式上面介绍的是通过yum源来安装的,也是官方推荐的方式,安装简单,但是对于安装的版本选择不够灵活,在实际工作中我们可能需要安装特定的版本的Nginx,接下来我们就介绍下这种方式:
安装软件:
可以直接下载,或者通过wget来下载wgethttp:
/nginx.org/download/nginx-1.14.0.tar.gz解压缩文件:
tar-zxvfnginx-1.14.0.tar.gz进入解压缩的文件夹中./configure-prefix=path如果不加prefix的话,默认会安装到/usr/local/nginx目录下操作可以遇到的报错,如果要使用Nginx的常用功能,那么首先需要确保该操作系统上至少安装了如下软件GCC编译器可以用来编译C语音程序,因为Nginx是C语音开发的,所以我们在安装的时候需要GCC的支持PCRE库:
是一个函数库,目前为很多软件所使用,该库支持正则表达式,如果我们在配置文件nginx.conf里使用了正则表达式,那么在编译Nginx时就必须把PCRE库编译进Nginx,因为Nginx的HTTP模块要靠它来解析正则表达式pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的!
zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了gzipon,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量,那么,在编译时就必须把zlib编译进Nginx。
同理,zlib是直接使用的库,zlib-devel是二次开发所需要的库。
yuminstall-ygcc-c+pcrepcre-develzlibzlib-devel./configure成功后我们需要执行make&makeinstall/configure配置环境make是编译的意思。
就是把源码包编译成二进制可执行文件makeinstall就是安装的意思。
make&makeinstall的意思就是执行make如果没有发生错误就执行makeinstall表示安装成功。
默认方式Nginx会被安装在/usr/local/nginx目录下pid文件默认在logs目录下:
启动的话直接启动sbin目录下的nginx即可好了Nginx的两种安装方式我们就给大家介绍到这里,希望大家课下都能动手安装成功,有问题的同学及时反馈,及时解决,下节课我们来给大家介绍Nginx中的常用的一些操作命令。
NginxNginx第第四四节课节课课程目标课程目标8.掌握Nginx常用的操作命令课程大纲课程大纲课程介绍:
上节课我们带领大家在Linux上面安装好了Nginx,对于我们学习来说两种方式用哪一种方式都可以,当然还有一些其他的安装方式,但这个不是我们的重点,其实只要能在Linux上安装好一个Nginx服务就对我们后面的学习没有影响了,我们本节课呢主要是给大家来介绍下Nginx操作的一些常用命令。
通过这些命令我们能够更加方便的来操作服务的启动关闭和重启等。
NginxNginx安装安装安装环境准备:
centos7.0安装的Nginx版本:
nginx-1.14.0.tar.gzNginx下载地址:
http:
/nginx.org/download/NginxNginx的操作命令的操作命令3.3.启动服务命令启动服务命令3.1默认启动方式直接执行Nginx的二进制文件即可/usr/local/nginx/sbin/nginx该方式默认会加载/usr/local/conf/nginx.conf配置文件3.2指定配置文件也可以在启动的时候指定要加载的配置文件-c/usr/local/nginx/sbin/nginx-cconf/nginx.conf当然我们在启动的时候也可以指定pid的存储位置/usr/local/nginx/sbin/nginx-g“pid/usr/local/nginx/nginx.pid;”-g参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突,否则无法启动。
就像上例那样,类似这样的配置项:
pidlogs/nginx.pid,是不能存在于默认的nginx.conf中的。
另一个约束条件是,以-g方式启动的Nginx服务执行其他命令行时,需要把-g参数也带上,否则可能出现配置项不匹配的情形。
例如,如果要停止Nginx服务,那么需要执行下面代码:
/usr/local/nginx/sbin/nginx-gpid/usr/local/nginx/nginx.pid;-sstop3.3查看服务是否启动成功ps-ef|grepnginx查看是否有对应的nginx进程还可以查看对应的pid文件,可以看到对应的master进程的进程编号,表示服务启动了最后nginx后默认的端口是80,这时我们能够在浏览器中访问成功也可以说明启动成功了4.4.停止服务命令停止服务命令查看master进程的方式ps-ef|grepnginx2.1信号量停止停止Nginx的方法有很多,一般是通过发送系统信号给Nginx主进程的方式来停止Nginx语法:
kill信号量类型master进程编号从容停止:
允许Nginx服务将当前正在处理的网络请求处理完成,但不再接收新的请求kill-quit进程编号快速停止:
立即停止当前Nginx服务正在处理的所有网络请求kill-term进程编号执行停止命令,进程立马被干掉了强制停止:
这个得分别干掉master进程和worker进程kill-9进程编号2.2快速停止上面的信号量方式停止,稍微显得麻烦点,我们需要先查看到对应的master进程编号,然后再发送对应的信号量,这时我们可以通过更简洁的方式来停止/usr/local/nginx/sbin/nginx-sstop使用-sstop可以强制停止Nginx服务。
-s参数其实是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid文件中得到master进程的进程ID,再向运行中的master进程发送TERM信号来快速地关闭Nginx服务。
2.3“优雅”地停止服务如果希望Nginx服务可以正常地处理完当前所有请求再停止服务,那么可以使用-squit参数来停止服务。
/usr/local/nginx/sbin/nginx-squit该命令与快速停止Nginx服务是有区别的。
当快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。
而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。
5.5.重启服务命令重启服务命令如果改变了Nginx的配置文件.nginx.conf,想要重启Nginx,首先需要验证nginx.conf的语法有没有问题/usr/local/nginx/sbin/nginx-t语音验证没有问题我们就可以通过-sreload来重新加载配置文件了/usr/local/nginx/sbin/nginx-sreload获取通过发送信号量的方式来重新加载kill-hupmaster进程编号查看nginx版本/usr/local/nginx/sbin/nginx-vNginxNginx第第五五节课节课课程目标课程目标9.了解nginx.conf的主要配置10.掌握Nginx虚拟主机的配置课程大纲课程大纲课程介绍:
上节课我们给大家介绍了Nginx的常用操作命令,比如启动,停止,重启等相关操作的命令,我们讲nginx是一个web服务器,可以做很多事情,那么我们这节课就来给大家介绍下nginx通过虚拟主机配置来做为静态资源服务器,同时给大家详细介绍下nginx.conf这个核心配置文件。
NginxNginx的虚拟主机配置的虚拟主机配置安装环境准备:
centos7.0安装的Nginx版本:
nginx-1.14.0.tar.gzNginx下载地址:
http:
/nginx.org/download/NginxNginx的核心配置文件的核心配置文件Nginx.conf的位置:
/usr/local/nginx/conf/nginx.conf默认的Nginx服务器配置文件都存放在安装目录的conf中,主要的配置文件名为nginx.conf.Nginx的核心模块有是Main和Events,还包括Http模块、邮件模块、还可以支持第三方模块等。
Main用于配置错误日志、进程及权限等信息、Events用于配置IO模型,比如epoll、kquq
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Nginx 课件 详细 完整
![提示](https://static.bingdoc.com/images/bang_tan.gif)