0001nginx简介、相关模型与原理
文章目录
- 一. 什么是Nginx
- 二. ngnix的一些模型
- 1、nginx的进程模型
- 2、worker的抢占(锁)机制模型
- 3. nginx事件处理模型
- 三. nginx加载静态资源的过程
一. 什么是Nginx
Nginx是一个高性能HTTP反向代理服务器,以下是nginx的相关能力
- 反向代理:nginx选择去将请求路由到那个ip
- 通过配置文件实现集群、负载均衡
- 可以处理2-3万并发连接数,官方监测能支持5万并发
- 静态资源服务器:通过将静态资源变成为服务。
- 网关:对接口进行拦截,配置安全管理
正向代理与反向代理的概念
正向代理:请求直接到达目标服务器
反向代理:请求被Nginx统一接收,反向代理服务器接收到之后,按照一定的规则将请求分发给指定服务器(通过http模块)
反向代理的优点:可以隐藏服务器的存在和特征,充当client和服务器的中间层,这是比较安全的。
二. ngnix的一些模型
1、nginx的进程模型
nginx采用单主进程,多子进程的模型
配置位置:nginx.conf
worker_processes 默认为1,也可以配置为:worker_processes auto;

请求过程:
从客户端(前端页面请求、postman请求)到nginx(master)接收请求,分发请求到工作进程,工作进程处理请求并将返回结果发送给客户端,最后管理nginx与客户端的链接。
- 客户端发送请求:当客户端发送HTTP请求到Nginx服务器时,Nginx会监听并接收这个请求。
- Nginx接收请求:Nginx的主进程接收到客户端的请求后,会将请求分发给工作进程(worker process)来处理。
- 工作进程处理请求:工作进程会根据Nginx的配置文件中的规则,对请求进行处理。这包括处理静态文件、代理请求到后端服务器、负载均衡等操作。
- 响应客户端:工作进程处理完请求后,会生成相应的HTTP响应,并将响应发送回给客户端。
- 关闭连接:一旦响应发送给客户端,Nginx会关闭与客户端的连接,释放资源。
注意:
- master监控worker的健康状况,如果有关闭的worker进程,会重启新的worker进程。
- worker之间相互独立。
查看主进程和工作进程
ps -ef | grep nginx

看到有一个主进程,若干work进程。
2、worker的抢占(锁)机制模型

假设一个master开启三个worker子进程,
此时client发起请求,三个worker去抢占互斥锁accep_mutex,假设worker1抢到了就处理请求,其他worker等待worker1处理完一个请求并将结果返回给client后,重新抢占锁。
3. nginx事件处理模型
当client向worker1请求堵塞时,其他client可以接着发出请求到work1,是异步非堵塞模型。

为什么Nginx性能这么高?
因为他的事件处理机制为异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决
非阻塞使得系统资源开销远远小于阻塞模式,因为系统不需要创建新的进程(或线程)。
三. nginx加载静态资源的过程
nginx接受客户端请求并找到静态资源的过程

加载过程:
- 客户端请求:在页面上输入http:ip:80/ 。路由“/”的请求会请求到Nginx服务器,
- nginx监听到来自80端口的请求,接着找到监听80端口的server,最后server加载默认的html
这里通过一个简单的server块配置理解下server:
server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}
这里表示一台server,监听80端口,server_name对应client的请求ip、hostname,当server监听到之后会加载nginx目录(可配)下html目录配置的文件。
接着详细描述一下:
- server指令用于定义一个虚拟主机(Virtual Host),即一个独立的服务器实例。每个server块都包含了对特定域名或IP地址的请求的处理规则
- 端口:server块的监听端口,即当有固定端口的进程请求时,server会进行拦截
- 域名和IP地址:可以使用servername指令来指定server块所匹配的域名或IP地址。例如,servername example.com;表示匹配域名为example.com的请求。
- 请求处理:拦截请求后,根据配置进行相对应的请求:如代理、重定向、静态文件处理等。例如,可以使用location指令来匹配要请求的URL
- SSL/TLS支持:如果需要启用HTTPS协议,可以在server块中配置SSL/TLS证书和相关参数,以实现安全的通信。
- 负载均衡:Nginx还支持负载均衡功能,可以在server块中配置upstream指令,将请求分发给多个后端服务器,以提高系统的性能和可靠性。
相关文章:
0001nginx简介、相关模型与原理
文章目录 一. 什么是Nginx二. ngnix的一些模型1、nginx的进程模型2、worker的抢占(锁)机制模型3. nginx事件处理模型 三. nginx加载静态资源的过程 一. 什么是Nginx Nginx是一个高性能HTTP反向代理服务器,以下是nginx的相关能力 反向代理&am…...
elasticsearch简单入门语法
基本操作 创建不同的分词器 ik_smart: 极简分词 ; ik_max_word: 最细力再度分词 基本的rest命令 methodurl地址描述PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)POSTlocalhost:9200/索引名称/类型名称创建文…...
Python自动化测试用例:如何优雅的完成Json格式数据断言
目录 前言 直接使用 优化 封装 小结 进阶 总结 资料获取方法 前言 记录Json断言在工作中的应用进阶。 直接使用 很早以前写过一篇博客,记录当时获取一个多级json中指定key的数据: #! /usr/bin/python # coding:utf-8 """ aut…...
阿里云对象存储服务OSS
1、引依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version> </dependency> <dependency><groupId>javax.xml.bind</groupId><artifa…...
第三节:在WORD为应用主窗口下关闭EXCEL的操作(1)
【分享成果,随喜正能量】夏日里的遗憾,一定都会被秋风温柔化解。吃素不难,难于不肯捨贪口腹之心。若不贪口腹,有何吃素之不便乎。虽吃华素,不吃素日,亦须少吃。以一切物类,皆是贪生怕死…...
mybatis 缓存
很久没有弄mybatis了,以至于今天在使用时忘记了一个很重事情(缓存),导致始终读取不数据库更新之后的最新的数据,后来折腾了小半天才想起缓存,所有小记住一下关闭mybatis的缓存 mybatis.configuration.cach…...
分布式Redis详解
目录 前言安装redis的俩种方法Redis 与 MySQL的区别Redis可以实现那些功能Redis常用的数据类型有序列表的底层是如何实现的?什么是跳跃表 Redis在Spring中的使用Redis 中为什么单线程比多线程快Redis的分布式锁如何实现Redis 分布式锁可能出现的问题Redis保持数据不丢失的方式…...
揭秘程序员和技师的7大共同点,最后一点绷不住了
大家好,这里是程序员晚枫,周末朋友出去放松回来,给我分析了一下程序员和技师的7个相同点,尤其是最后一点让我彻底绷不住了! 我也分享给大家。 1、都有工号。98号技师,380号技师大家都很熟悉了,…...
SQL | 使用函数处理数据
8-使用函数处理数据 8.1-函数 SQL可以用函数来处理数据。函数一般是在数据上执行的,为数据的转换和处理提供了方便。 8.1.1 函数带来的问题 每种DBMS都有特定的函数,只有很少一部分函数,是被所有主要的DBMS等同的支持。 虽然所有的类型的…...
基于Dlib库+SVM+Tensorflow+PyQT5智能面相分析-机器学习算法应用(含全部工程源码)+训练及测试数据集
目录 前言总体设计系统整体结构图系统流程图模型流程 运行环境Python 环境TensorFlow环境界面编程环境 模块实现1. 数据预处理2. 模型构建1)定义模型结构2)交叉验证模型优化 3. 模型训练及保存4. 模型测试1)摄像头调用2)模型导入及…...
【Flutter】【packages】simple_animations 简单的实现动画
package:simple_animations 导入包到项目中去 可以实现简单的动画, 快速实现,不需要自己过多的设置 有多种样式可以实现[ ] 功能: 简单的用例:具体需要详细可以去 pub 链接地址 1. PlayAnimationBuilder PlayAnima…...
python之matplotlib入门初体验:使用Matplotlib进行简单的图形绘制
目录 绘制简单的折线图1.1 修改标签文字和线条粗细1.2 校正图形1.3 使用内置样式1.4 使用scatter()绘制散点图并设置样式1.5 使用scatter()绘制一系列点1.6 python循环自动计算数据1.7 自定义颜色1.8 使用颜色映射1.9 自动保存图表练习题 绘制简单的折线图 绘制一个简单折线图…...
[Linux kernel] [ARM64] boot 流程梳理
一、启动汇编代码部分 0. 链接文件找代码段入口 – _text arch/arm64/kernel/vmlinux.lds.S ENTRY(_text). KIMAGE_VADDR;.head.text : {_text .;HEAD_TEXT}.text : ALIGN(SEGMENT_ALIGN) { /* Real text segment */_stext .; /* Text and read-only data */IRQENTRY_TE…...
重建二叉树
输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 注意: 二叉树中每个节点的值都互不相同;输入的前序遍历和中序遍历一定合法; 数据范围 树中节点数量范围 [0,100] 。 样例 给定: 前序遍历是:[3, 9, 2…...
支付整体架构
5.4 支付的技术架构 架构即未来,只有建立在技术架构设计良好的体系上,支付机构才能有美好的未来。如果支付的技术体系在架构上存在问题,那么就没有办法实现高可用性、高安全性、高效率和水平可扩展性。 总结多年来在海内外支付机构主持和参与…...
百度智能云:千帆大模型平台接入Llama 2等33个大模型,上线103个Prompt模板
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…...
烦人的幻灯片——拓扑排序
烦人的幻灯片 烦人的幻灯片问题描述输入输出格式输入格式输出格式 输入输出样例输入样例:输入样例一:输入样例二: 输出样例:输出样例一:输出样例二: 正确做法拓扑排序 代码 烦人的幻灯片 问题描述 李教授…...
无涯教程-Perl - ord函数
描述 此函数返回EXPR指定的字符的ASCII数值,如果省略则返回$_。例如,ord(A)返回值为65。 语法 以下是此函数的简单语法- ord EXPRord返回值 该函数返回整数。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -wprint("ord() ", ord(G), "\n"…...
Python爬虫:js逆向调式操作及调式中遇到debugger问题
Python爬虫:js逆向调式操作及调式中遇到debugger问题 1. 前言2. js逆向调式操作2.1 DOM事件断点2.2 XHR/提取断点(用于请求接口参数加密处理)2.3 请求返回的数据是加密的2.4 hook定位参数 3. 调式中遇到debugger问题3.1 解决方式(一律不在此处暂停)3.2 问题:点击一律…...
HTML网页制作技巧:打造出色的用户体验
HTML是构建网页的基础语言,掌握一些关键的技巧可以帮助您创建出色的用户体验。本文将介绍一些HTML网页制作的技巧,从布局和样式到交互和可访问性,为您提供有用的指导。无论您是初学者还是有经验的开发者,这些技巧都将对您的网页设…...
单入射方向光波导耦合光栅的优化
摘要 将光耦合到光波导在现代光学的各种应用中具有重要意义。在VirtualLab Fusion中,使用傅里叶模态法(FMM,也称为RCWA)和参数优化工具,可以优化真实的光栅几何形状,以实现特定衍射级次的最佳耦合效率。本例展示了针对特定入射方…...
AI优化电动汽车充电:PSO算法与GPU加速实践
1. 电动汽车充电优化的AI革命:从理论到实践作为一名长期关注能源与AI交叉领域的技术从业者,我最近被加拿大皇家军事学院(RMC)团队的研究成果所震撼。他们开发的这套基于粒子群优化(PSO)算法的实时充电调度系统,完美诠释了如何用AI技术解决电动…...
基于全域数学的宇宙螺旋场统一结构研究【乖乖数学】
基于全域数学的宇宙螺旋场统一结构研究【乖乖数学】 作者:乖乖数学 时间:20260422根据您提供的文档《基于全域数学的宇宙螺旋场统一结构研究》,我为您总结其核心内容如下: 一、核心目标 该研究旨在打破物理学、化学和生物学之间的…...
终极游戏音频解密指南:如何使用acbDecrypter快速提取加密音频
终极游戏音频解密指南:如何使用acbDecrypter快速提取加密音频 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 你是否遇到过想要提取游戏中的背景音乐或音效,却发现音频文件被加密无法直接播放&#x…...
蓝牙耳机控制手机音乐的幕后功臣:一文搞懂AVRCP协议(附PASS THROUGH指令详解)
蓝牙耳机控制手机音乐的幕后功臣:AVRCP协议深度解析与实战指南 当你在通勤路上用蓝牙耳机轻触"下一曲"按钮时,背后是一套精密的无线控制协议在发挥作用。AVRCP(Audio/Video Remote Control Profile)作为蓝牙技术联盟定义…...
Blazor + WASI + .NET AOT三重编译链曝光:2026边缘计算场景下首例亚毫秒级首屏加载实录
第一章:Blazor WASI .NET AOT三重编译链的诞生背景与技术动因Web 应用正经历从“运行时依赖”向“零依赖、跨平台、确定性执行”的范式迁移。传统 Blazor WebAssembly 依赖 Mono WebAssembly 运行时,虽支持 .NET 生态,但启动延迟高、内存占…...
别再手动建模了!3DMAX 2011+ 用户必看:这个螺母螺栓插件,5分钟搞定标准件
3DMAX高效建模革命:参数化螺母螺栓插件深度解析 在机械设计与工业产品建模领域,标准件的重复创建一直是设计师的痛点。传统手动建模一颗符合国标的六角螺母,熟练设计师至少需要15分钟调整参数和检查尺寸,而一个中等复杂度的装配体…...
新型隐形眼镜利用微流控技术:实时监测眼压,自动给药治疗青光眼!
隐形眼镜新突破:监测与治疗青光眼 一种新型隐形眼镜设计利用微流控技术来测量青光眼患者的眼压,并自动给药。全球有超过 8000 万人患有青光眼,这使其成为全球第二大常见致盲原因。这种疾病由眼内压升高损害视神经引起,目前无法治愈…...
手机热点+ESP-01S:零路由器环境下,手把手搞定TCP客户端与服务器双向通信
手机热点ESP-01S:零路由器环境下实现TCP双向通信的实战指南 在移动开发或物联网原型设计中,我们常遇到没有传统路由器的临时场景——可能是校园实验室的角落、户外测试场地,或是深夜宿舍断电后的应急调试。这时,手机热点成为最可靠…...
如何突破Intel CPU性能瓶颈:智能电压调节工具的终极指南
如何突破Intel CPU性能瓶颈:智能电压调节工具的终极指南 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility 你是否曾被…...
