当前位置:   article > 正文

nginx视频学习资料总结_nginx学习视频

nginx学习视频

nginx: 是一个Web服务器,如果不是需要apache的特殊功能的话,nginx是服务器的首选。

​ 是一个轻量级的反向代理。(两个应用是web和mail)

​ 模块化设计

反向代理: 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

​ 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。

​ 当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。

在这里插入图片描述

keepalived+nginx:

keepalived非常轻量级的高可用实现方案,nginx是非常轻量级的反向代理。天造地设的一对。

nginx基于异步IO来实现的,基于事件驱动的加上边缘触发来完成一个线程(单线程进程)处理多个请求,面对C10K问题是一个行之有效的方案。

C10K:最初的服务器是基于进程/线程模型。新到来一个TCP连接,就需要分配一个进程。假如有C10K,就需要创建1W个进程 。

-------------------------
IO模型:

​ 阻塞:一个进程所发出的IO请求不能得到满足的时候,必须要一直等待至内核把这个数据从IO设备复制到内核缓冲区,再从内核缓冲区复制给这个进程的地址空间以后,在这个期间,进程必须处于等待状态。

​ 非阻塞:当进程向内核发出系统调用的之后,不等待,而是一遍一遍轮询检查内核有没有把数据准备好。

​ 同步:发送一个数据,对方收下来并且完整存储下来之后才返回,这叫同步。(双方必须要同步时钟信号)

​ 异步(Mysql复制):把数据发送出去,对方什么时候收下来,什么时候存储下来都不管。(双方不需要同步时钟信号)

同步阻塞:

同步非阻塞:基于事件驱动的IO(event-driven)

异步阻塞:IO复用

异步非阻塞:aio

0、HTTP和HTTPS的区别:
HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

以下是具体一些分析

一、HTTP和HTTPS的基本概念

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二 **、**HTTP和HTTPS的主要特点和工作流程
HTTP特点:

1.支持客户/服务器模式。(C/S模式)

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

HTTP工作流程:

第一步:建立TCP/IP连接,客户端与服务器通过Socket三次握手进行连接

第二步:客户端向服务端发起HTTP请求(例如:POST/login.html http/1.1)

第三步:客户端发送请求头信息,请求内容,最后会发送一空白行,标示客户端请求完毕

第四步:服务器做出应答,表示对于客户端请求的应答,例如:HTTP/1.1 200 OK

第五步:服务器向客户端发送应答头信息

第六步:服务器向客户端发送请求头信息后,也会发送一空白行,标示应答头信息发送完毕,接着就以Content-type要求的数据格式发送数据给客户端

第七步:服务端关闭TCP连接,如果服务器或者客户端增Connection:keep-alive就表示客户端与服务器端继续保存连接,在下次请求时可以继续使用这次的连接

HTTPS特点:

HTTPS是HTTP协议的修改,它加密数据并确保其机密性。其配置可保护用户在与网站交互时免于窃取个人信息和计费数据。

1、优点

相比于http,https可以提供更加优质保密的信息,保证了用户数据的安全性,此外https同时也一定程度上保护了服务端,使用恶意攻击和伪装数据的成本大大提高。

2、缺点

缺点也同样很明显,第一https的技术门槛较高,多数个人或者私人网站难以支撑,CA机构颁发的证书都是需要年费的,此外对接Https协议也需要额外的技术支持;其二,目前来说大多数网站并不关心数据的安全性和保密性,其https最大的优点对它来说并不适用;

其三,https加重了服务端的负担,相比于http其需要更多的资源来支撑,同时也降低了用户的访问速度;

第四,目前来说Http网站仍然大规模使用,在浏览器侧也没有特别大的差别,很多用户不关心的话根本不感知。

HTTPS工作流程:

在这里插入图片描述

第一步:客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

第二步:Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

第三步:客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

第四步:客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

第五步:Web服务器利用自己的私钥解密出会话密钥。

第六步:Web服务器利用会话密钥加密与客户端之间的通信。

最后说一句 ,ssl证书阿里云上可以免费申请一年

在这里插入图片描述

-------------------------
基本的HTTP服务器特性:
  1. 处理静态文件、索引文件,打开文件描述符缓存(一个页面通常具有元数据和数据,nginx可以缓存数据的元数据和文件描述符,下一次找的时候通过缓存就能找到)
  2. 使用缓存加速反向代理,简单负载均衡以及容错(反向代理时候能够实现后端服务器的健康检查,一旦发现不健康了,可以自动剔除,类似与keepalived。这个第三方模块只支持1.0,不支持1.2于是就有了Tenginx)
  3. Tenginx:淘宝官方弄得,有更多的第三方模块。(开源)
  4. 远程Fast CGI(结合这个方式支持PHP,apache是直接将php做成模块)、uwsgi(基于这个来支持python,不是PHP)、SCGI、和memcached服务的缓存加速支持。(nginx做反向代理的时候已经可以提供缓存功能,默认缓存在磁盘上的,但是可以实现在内存中缓存打开的文件描述符,httpd做反向代理既可以支持磁盘缓存,也可以支持内存缓存,现在的nginx已经附带了memcached模块)
  5. SSI:可以实行将一个页面当中某些内容做成静态的,某些内容做成动态的,缓存静态的内容,动态加载动态的内容。
其他的HTTP服务器特性:

基于域名和IP和端口的虚拟主机;

keep—alived(长连接)和pipelined连接支持;

重新加载配置以及在线升级时,不需要终端正在处理的请求(有一个主进程生成很多的子进程,子进程有worker等,新连接使用新配置,老旧的连接先使用旧连接,当老连接慢慢退出以后,在建立新连接);(热部署/平滑升级)

带缓存的日志写操作;

3xx~5xx错误代码重定向;

重写模块,使用正则表达式改变URI;

根据客户端地址执行不同功能(不光时地址,也可以是浏览器类型)

支持FLV流和MP4流;(边下载边播放)

架构和扩展性:

一个主进程和多个工作进程,工作进程以非特权用户进行(一个master进程产生多个worker进程,master以管理员身份启动(master负责分析配置文件是否有错误,有错误也不会影响worker进程,只是master会告诉你有错误,需要重新装载,然后就是新用新的,旧用旧的)(监控80端口,只有管理员才能启用小于1024的端口),worker进程由master进程以普通用户身份生成,master主要是监控worker进程是不是够数目以及运行是否正常)(每个worker进程内部还有许多模块,用到那个模块,调用哪个模块)(除了最核心的功能之外,其他的都以模块的方式运行,这些模块以流水线的方式在工作)

如果负载以CPU密集型应用为主,如SSL或者压缩应用,则worker数应和cpu数相同,若负载以IO密集型为主,如相应大量内容给客户端,则worker进程应为cpu个数的1.5~2倍。

在这里插入图片描述

支持事件驱动机制:kqueue(freeBSD 4.1+)、epoll(Linux2.6+)、/dev/poll(这三种是支持事件驱动的IO框架,nginx都支持)如果不支持epoll,则选择select或者poll。

支持sendfile和sendfile 64:内核不需要将从磁盘中调用的文件复制给用户空间进行封装,用户空间封装完成之后在复制给内核,而是直接代替用户空间进行封装,然后直接转发给网卡。

在这里插入图片描述

在这里插入图片描述

10000个非活跃的HTTP keep-alive连接仅占用2.5M内存

尽可能避免数据拷贝操作(sendfile)

主进程主要完成的工作:
  1. 读取并验证配置信息
  2. 创建、绑定以及关闭套接字
  3. 启动、终止以及维护worker进程的个数
  4. 无须终止服务而重新配置工作的特性**(热部署/平滑升级)**
  5. 控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本
  6. 重新打开日志文件(实现日志滚动)
worker进程主要完成的任务:
  1. 接受、传入并处理来自客户端的连接
  2. 提供反向代理以及过滤功能
  3. nginx任何能完成的其他任务
cache loader进程主要的工作:
  1. 检查缓存存储中的缓存对象
  2. 使用缓存元数据建立内存数据库
cache manager进程主要任务:
  1. 缓存的失效以及过期检验
nginx配置:

main:核心配置

http:只对web服务器有效

​ server:

​ location:定义虚拟主机

upstream:只有在定义反向代理的时候才能用到

mail:只对mail服务器有效

server{}:虚拟主机(两个虚拟主机监听同一个地址,同一个端口,但是server_name不同,这就是基于名称的虚拟主机)

location{}:nginx结合以下两种功能。

httpd:

<DocumentRoot " ">

:基于本地文件系统路径来定义访问属性

<Location “/bbs”>

:基于URI路径来定义访问属性

URI:www.baidu.com**/URI**

----------------------------

URL的一般格式为(带方括号[]的为可选项):

protocol : // hostname [:port ] / path /

URL的格式由三部分组成:

①第一部分是协议(或称为服务方式)。

②第二部分是存有该资源的主机IP地址(有时也包括端口号)。

③第三部分是主机资源的具体地址,如目录和文件名等。

第一部分和第二部分用“

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/103691?site
推荐阅读
相关标签