IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx基础知识 -> 正文阅读

[系统运维]Nginx基础知识


Niginx是一款开源的高性能HTTP服务器及反向代理服务器产品,此外,它还可以提供IMAP/POP3代理服务等功能。

1、架构设计

1.1、设计概览

主进程:Master Process,主要功能是与外界通信和对内部其它进程管理,包括进行配置文件解析、数据结构初始化、模块配置和注册、信号处理、网络监听生成、工作进程生成和管理工作。
工作进程:Worker Process,由主进程生成,生成数量可在配置文件中指定,正常情况下生存于主进程的整个生命周期,主要进行进程初始化、模块调用和请求处理等工作,是Nginx服务器提供服务的主体。
缓存机制:为提高请求与响应处理效率,通过缓存机制,将历史响应数据缓存到本地。在每次Nginx服务器启动后的一段时间内,会启动专门的进程对本地缓存的内容重建索引,保证对缓存文件的快速访问。
在这里插入图片描述

1.2、模块化结构

Nignx服务器的开发完全遵循模块化设计思想。
命名习惯:一般ngx_开头,_module结尾,如ngx_core_module、ngx_events_module等。
模块分类:核心模块、标准HTTP模块、可选HTTP模块、邮件服务模块与第三方模块5大类。
核心模块:提供最基础最核心服务,主要包括两类功能,一类为主体功能,如进程管理、权限控制、错误日志记录、配置解析等;一类为响应请求事件必需的功能,包括事件驱动机制、正则表达式解析等。
标准HTTP模块:默认会被编译到Nginx中,除非在配置时添加-without-XXX参数声明不编译,如

模块功能
ngx_http_core配置端口、URI分析、服务器响应错误处理、别名控制等http核心事务
ngx_http_access_module基于IP地址的访问控制(允许/拒绝)
ngx_http_auth_basic_module基于HTTP的身份认证
ngx_http_headers_filter_module设置HTTP响应头
ngx_http_upstream_module负载均衡支持

可选HTTP模块:默认不会被编译到Nginx中,须在配置时添加-with-XXX参数声明编译

模块功能
ngx_http_mp4_module支持将H.264/AAC编码的多媒体信息按照流文件传输(如.mp4/.m4v/.m4a格式)
ngx_http_flv_module支持flash

邮件服务模块:Nginx发行版中,快速编译默认不会编译相关模块,如

模块功能
ngx_mail_pop3_module支持POP3协议
ngx_mail_imap_module支持IMAP协议
ngx_mail_smtp_module支持SMTP协议

第三方模块:自定义扩展模块,如

模块功能
echo_nginx_module支持在Nginx配置文件中使用echo、sleep、time及exec等类Shell命令)
rds_json_nginx_module支持Json数据的处理
lua_nginx_module支持lua脚本语言

1.3、Web请求处理方式

处理请求的三种方式
1、多进程方式:服务器每收到一个请求,就会由主进程生成一个子进程与客户端进行交互处理,直到连接断开,该子进程就结束了。该方式设计和实现相对简单,但是操作系统生成子进程开销较大,当并发量较大时,服务器压力很大;(初期的Apache服务器就是该方式,为了应对高并发,采用了“预生成进程”机制)
2、多线程方式:服务器每收到一个请求,就会由主进程派生一个线程与客户端进行交互处理。该方式开销小于生成进程,但是需要处理多线程问题。
3、异步方式:
同步与异步:是描述通信模式的概念。同步指发送方发送请求后,需要等到接收方响应后才能发送下一个请求;异步则相反,发送方不必等待接收方的响应就可以发现下一个请求;
阻塞与非阻塞:是描述进程处理调用的方式。阻塞方式是调用结果返回之前,当前线程从运行状态被挂起,一直等到调用结果返回之后,才会进入就绪状态,获取CPU后继续执行;非阻塞方式则相反,如果调用结果无法立即返回,当前线程也不会挂起,而是立即返回执行下一个调用。
经常会使用“同步阻塞方式“与“异步非阻塞方式”。
Nginx服务器如何处理请求
其为了应对高并发,使用的异步非阻塞方式对外提供服务。Nginx启动后,会产生一个主进程和多个工作进程(相当于预生成),每个工作进行使用异步非阻塞方式,可以处理多个客户端请求。

1.4、事件驱动模型

事件驱动模型:一般由事件收集器、事件发送器和事件处理器三部分组成。
在这里插入图片描述
事件处理的3中方法
1、发送器传递一个请求,目标对象创建一个新进程,调用处理器处理。这种方式编码实现相对简单,但是创建进程开销大,导致服务器性能较差;
2、发送器传递一个请求,目标对象创建一个新线程,调用处理器处理。这种方式性能更高,但是会面临多线程控制问题(同步、死锁),编码难度增大;
3、发送器传递一个请求,目标对象将其放入一个待处理的列表中,使用非阻塞I/O方式调用处理器处理。这种方式编码复杂度更高,但是效率更好。大多数网络服务器采用的这种方式,Nginx也一样。
Nginx事件驱动模型:采用的“事件驱动处理库“方式,也称“多路IO复用方法”,最常见的有select模型、poll模型与epoll模型,Nginx还支持rtsig模型、kqueue模型、dev/poll模型和eventport模型等。

2、常用功能

2.1、HTTP代理与反向代理

最主要功能之一

2.2、负载均衡

两种场景:一种是单一的重负载分摊到多个节点做并行处理,然后汇集每个节点的结果返回;一种是将并发流量分摊到多个节点,提供服务器处理性能。一般谈到的负载均衡都是指后者。
Nginx负载均衡策略:内置策略(轮询、加权轮询、IP hash)和扩展策略(url hash、fair等)。轮询:即每个请求按顺序逐一分配到不同的后端节点即可;加权轮询:指定请求到后端节点的权重,一般用于后端节点性能不均衡场景;IP hash:将请问IP进行hash操作,分配到不同后端节点,之后对应IP请求会固定访问某个后端节点,解决用户session在不同节点无法共享的问题;

2.3、Web缓存

缓存机制对应提高web服务器负载能力、提高用户请求响应速度至关重要,目前Nginx在这方面能力以及堪比Squid。它自身可以通过Proxy Store和Proxy Cache实现,也可以与Squid、nacache联合使用。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 11:10:24  更:2021-08-02 11:10:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 0:41:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码