Nginx编译安装+nginx模块

news2024/11/22 7:00:33

一、I/O模型 处理高并发的时候用

1.1I/O模型简介

同步/异步(消息反馈机制):关注的是消息通信机制,即调用者在等待一件事情的处理结果时,被调用者是否提供完成状态的通知。

  • 同步:synchronous,被调用者并不提供事件的处理结果相关的通知消息,需要调用者主动询问事情是否处理完成
  • 异步:asynchronous,被调用者通过状态、通知或回调机制主动通知调用者被调用者的运行状态

阻塞/非阻塞:关注调用者在等待结果返回之前所处的状态

  • 阻塞:blocking,指IO操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起,干不了别的事情。
  • 非阻塞:nonblocking,指IO操作被调用后立即返回给用户一个状态值,而无需等到IO操作彻底完成,在最终的调用结果返回之前,调用者不会被挂起,可以去做别的事情。

1.2多路复用I/O型

多路复用I/O(I/O multiplexing)模型是一种基于事件驱动的 I/O 处理模式。它利用操作系统提供的多路复用机制(如select、poll、epoll等)来同时监听多个 I/O 事件,当某个事件就绪时,通知应用程序进行处理。

通过多路复用I/O模型,可以在一个线程中同时处理多个客户端连接的 I/O 操作,而不需要为每个连接创建一个线程或进程,避免了资源开销和上下文切换的成本。

常见的多路复用I/O模型有:

  • select:适用于连接数不太多的情况,轮询监听多个文件描述符上的 I/O 事件。
  • poll:与select类似,但没有连接数的限制,并且不会修改传入的描述符集合。
  • epoll:适用于连接数非常多的情况,通过事件驱动机制来处理 I/O 事件,可以在大并发情况下具有较高的性能优势。

1.3异步I/O模型

异步 I/O 模型是一种非阻塞的 I/O 处理模式,通过回调函数或事件通知的方式来处理已完成的 I/O 操作,能够提高系统的并发性和处理效率。

1.4事件模型 select poll epoll

Nginx服务使用异步非阻塞模式:请求不需要排队,会反馈任务的完成结果。

Apache服务使用同步阻塞模式:请求需要排队,且不会主动返回结果。

优缺点:

模型概述优点缺点
select最古老的模型可以同时监视多个文件描述符效率较低,不适用于大规模并发连接
poll类似于select效率相对更高,可以处理大量并发连接随着文件描述符数量的增加,性能下降较明显
epollLinux特有模型在高并发场景下性能表现更好,使用边缘触发方式,只在状态变化时通知在非Linux系统上不可用,涉及到一些操作系统特定的细节和配置

区别:

selectpollepoll
操作方式遍历遍历回调
底层实现

数组

链表哈希表
IO效率每次调用都进行线性遍历,时间复杂度为0(n)同左事件通知方式,每当fd就绪,系统注册的回调函数就会被调用,将就绪的fd放到rdlllist里,时间复杂度O(1)
最大连接数1024(x86)2048(x64)无上限

无上限

fd拷贝每次调用select都需要把fd集合从用户拷贝到内核态每次调用poll,都需要把fd集合从用户态拷贝到内核态调用epoll ctl时拷贝进内核并保存,之后每次epoll wait不拷贝

二、Nginx概述

2.1简介

①作用:支持七层(应用层)和四层(传输层)反向代理、可做web服务器。

②特性:高可靠性、支持热部署、可扩展性好、高并发高性能、单机部署。

⑤进程:一个主进程master生成多个worker子进程,worker子进程负责处理工作。

2.2Nginx和APACHE的区别

特点NginxApache

并发处理

高并发处理能力,轻量级且低内存消耗对静态文件处理高效,但在高并发情况下内存消耗较大
资源占用占用更少的系统资源和内存占用较多的系统资源和内存
事情驱动使用事件驱动模型,可在较少的线程上同时处理多个连接使用多线程模型,会为每个连接创建一个线程
配置灵活性配置简单明了,易于阅读和维护配置相对复杂,需要更多的配置项指定

扩展性

支持动态模块和第三方扩展,可自定义功能支持动态模块和第三方扩展,但相对Nginx更少
虚拟主机支持无限个虚拟主机配置,每个虚拟主机独立配置支持无限个虚拟主机配置,但每个虚拟主机使用同一套配置
模块支持支持反向代理、负载均衡、HTTP缓存等支持反向代理、负载均衡、SSL等
用户群体更适合高并发、网络应用场景,如反向代理、负载均衡更适合传统Web服务器应用,如静态内容和PHP

核心区别
1)apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个
连接(万级别)可以对应一个进程;
2)需要稳定用apache,需要高性能用nginx。

2.3什么是零拷贝

在Nginx中,使用零拷贝技术可以将数据从文件系统直接发送到网络套接字中,而不需要中间的内存拷贝。

这可以减少CPU的使用量,减少内存带宽的消耗,并且可以更快地将数据发送到客户端

三、Nginx模块

3.1安装方式

3.1.1方式一 yum安装

#安装依赖包
yum install -y epel-releas
#yum方式安装
yum install -y nginx

3.2.2方式二 编译安装

前期准备

#安装依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#新建nginx用户便于管理
useradd -M -s /sbin/nologin nginx
#官网下载包
wget http://nginx.org/download/nginx-1.18.0.tar.gz

编译安装nginx

tar xf nginx-1.18.0.tar.gz 
mkdir /apps/nginx -p
cd nginx-1.18.0/

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

make -j2 && make install

chown -R nginx.nginx /apps/nginx#加权限

ln -s /apps/nginx/sbin/nginx /usr/sbin/ #直接启动 不需要绝对路径

3.2Nginx命令 常用选项

#基本格式
nginx [选项] [参数]

3.2.1常用选项

选项功能
-c <配置文件>指定一个自定义的配置文件路径
-g <全局配置>在命令行中指定全局配置选项
-p <工作目录>设置工作目录,用于存放日志文件和临时文件
-s <信号>向nginx发送信号,常用的有stop(停止nginx进程)和reload(重新加载配置文件)
-t测试配置文件语法是否正确
-q在测试配置文件时,以静默模式运行,只输出关键信息
-V显示nginx的版本、编译信息和配置参数
-h显示帮助信息,包括所有可用的命令行选项
-s <文件>启动nginx并将master进程的PID写入指定的文件
-e <错误日志文件>设置错误日志文件的路径
-g <配置指令>设置全局配置指令。可以在命令行中设置多个全局配置指令,用分号分隔
-T测试配置文件,并打印出解析后的配置内容
-q <文件>检查配置文件,并打印出解析后的配置内容,但不启动nginx

3.2.3信号

#基本格式
nginx  -s 信号

信号描述
stop快速停止nginx进程,可能会中断现有连接。
quit优雅地停止nginx进程,等待现有连接完成后再停止。
reload重新加载配置文件,优雅地应用新配置,不中断现有连接。
reopen重新打开日志文件,用于日志切割或日志重定向。
term快速停止nginx进程,可能会中断现有连接,与stop信号类似。
usr1重新打开日志文件,用于日志切割或日志重定向,与reopen信号类似。

usr2

平滑地升级nginx可执行文件。
hup重新加载配置文件,优雅地应用新配置,与reload信号类似。
winch当nginx以master/worker工作模式运行时,重新生成worker进程以适应新的配置。

usr3

向worker进程发送自定义信号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1796691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【kubernetes】探索k8s集群的配置资源(secret和configma)

目录 一、Secret 1.1Secret 有四种类型 1.2Pod 有 3 种方式来使用 secret 1.3应用场景&#xff1a;凭据 1.4创建 Secret 1.4.1用kubectl create secret命令创建Secret 1.4.2内容用 base64 编码&#xff0c;创建Secret 1.4.2.1Base64编码 1.4.2.2创建YAML文件 1.4.2.3…

中国游戏产业月度报告分享 | 洞察游戏行业市场

作为中国音像与数字出版协会主管的中国游戏产业研究院的战略合作伙伴&#xff0c;伽马数据发布了《2024年4月中国游戏产业月度报告》。 数据显示&#xff0c; 2024年4月&#xff0c;中国游戏市场实际销售收入224.32亿元&#xff0c;环比下降4.21%&#xff0c;同比下降0.27%。移…

上位机图像处理和嵌入式模块部署(f407 mcu中的项目开发特点)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 和soc相比较&#xff0c;mcu的项目规模一般不算大。因为&#xff0c;soc项目中&#xff0c;从规划、硬件开发、驱动、应用端、服务器端到测试&…

漏洞挖掘 | 记一次项目上从前台登录到Getshell

这一次要打的目标是一个管理系统&#xff0c;开局一个登录框&#xff0c;按照常规思路是先测测弱口令然后爆破&#xff0c;不行再试试SQL注入&#xff0c;这一次运气较好&#xff0c;admin1,admin直接进去了 进入后台&#xff0c;功能还是很多的 有个上传&#xff0c;不过没啥用…

Vue3主题切换

又是一个曾经研究失败的课题&#xff0c;嘻嘻&#xff0c;今天必拿下~ 网上有很多主题切换的案例&#xff0c;但是别人的终究是别人的&#xff0c;研究透彻你才能灵活运用。这边用的V3 admin vite项目的主题切换。 这边cv了相关组件后报错 在这个函数时发生了错误&#xff0c;…

gitee上传整个项目文件夹

1.访问git官网并下载 Git 如下图&#xff1a; 点击download&#xff0c;然后选择合适的版本进行下载&#xff1a; 如下图&#xff0c;我下载的是2.32.0.2版本&#xff0c;64位windows版。 下载完之后&#xff0c;直接点击安装。 然后根据向导&#xff0c;一路默认到安装完成。…

超越预期:Containerd 如何成为 Kubernetes 的首选容器运行时

> 作者&#xff1a;尹珉&#xff0c;KubeSphere Ambassado&#xff0c;rKubeSphere Contributor&#xff0c;KubeSphere 社区用户委员会杭州站站长。 踏上 Containerd 技术之旅 容器技术已经成为现代软件开发和部署的核心工具。通过容器&#xff0c;开发者可以创建轻量级…

Unity【入门】重要组件和API

Unity重要组件和API 文章目录 1、最小单位GameObject1、成员变量2、静态方法1、代码创建Unity自带几何体 CreatePrimitive2、查找对象3、实例化对象&#xff08;克隆对象&#xff09;的方法4、删除对象的方法5、切换场景不移除 3、成员方法1、创建空物体2、为对象动态添加脚本(…

ESXi内安装OpenWrt

目录 0、前言 1、环境 2、转换格式 3、创建虚拟机 4、OpenWrt设置 5、单臂流量测试 6、总结 0、前言 前几天在ESXi中先安装了PVE,然后在PVE中安装OpenWrt,没有来得及深入测试,仅仅作为安装和熟悉PVE的过程。后来转念一想为什么不在ES…

OpenStack云平台管理

OpenStack云平台管理 文章目录 OpenStack云平台管理资源列表基础环境一、部署Openstack二、创建网络和路由2.1、删除默认的网络2.2、创建网络和路由2.2.1、创建外部网络2.2.2、创建内部网络 2.3、创建路由 三、创建实例3.1、配置实例3.2、配置NAT转换 四、绑定浮动IP地址五、添…

Nacos的下载使用

下载 本地Java8Maven环境 下载地址 https://github.com/alibaba/nacos/releases使用 解压安装包&#xff0c;直接运行bin目录下的startup.cmd 账号密码都是nacos

iphone突然黑屏?3种方法解决问题!

iphone突然黑屏这应该是出现了iOS系统故障。一般来说&#xff0c;无摔落、浸水等情况造成设备出现硬件问题&#xff0c;多半是设备出现了系统故障。 虽然苹果iOS系统性能是较优的&#xff0c;但还是可能因各种使用情况出现不一样的iOS系统问题&#xff0c;包括升级、越狱、安装…

Python疑难杂症--考试复习

1.排序输出字典中数据 dic1 {Tom:21,Bob:18,Jack:23,Ana:20} dic2 {李雷:21,韩梅梅:18,小明:23,小红:20} nint(input()) if n>len(dic1):nlen(dic1) print(sorted(dic1.keys())[:n]) print(sorted(dic2.items(),keylambda item:item[1])[:n]) 2.罗马数字转换 def F(s):d{…

GPT-4o如何重塑AI未来!

如何评价GPT-4o? 简介&#xff1a;最近&#xff0c;GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 GPT-4o似乎是一个针对GPT-4模型进行优化的版本&#xff0c;它在性能、准确性、资源效率以及安全和…

Ubuntu22.04之安装emacs29.3版本(二百四十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

vulnhub靶机实战_DC-2

下载 靶机下载链接汇总&#xff1a;https://download.vulnhub.com/使用搜索功能&#xff0c;搜索dc类型的靶机即可。本次实战使用的靶机是&#xff1a;DC-2下载链接&#xff1a;https://download.vulnhub.com/dc/DC-2.zip 启动 下载完成后&#xff0c;打开VMware软件&#xf…

docker安装rabbitmq详解

目录 1、安装 1-1.查看rabbitmq镜像 1-2.下载Rabbitmq的镜像 1-3.创建并运行rabbitmq容器 1-4.查看启动情况 1-5.启动web客户端 1-6.访问rabbitmq的客户端 2..遇到的问题 解决方法: 1、安装 1-1.查看rabbitmq镜像 docker search rabbitmq 1-2.下载Rabbitmq的镜像 拉…

UE4_Ben_图形52_水下效果处理

学习笔记&#xff0c;不喜勿喷&#xff0c;欢迎指正&#xff0c;侵权立删&#xff01;祝愿生活越来越好&#xff01; 在这个后期处理的效果中&#xff0c;我们可以看到有很多不同的&#xff0c;这里有浓雾&#xff0c;波纹扭曲&#xff0c;镜头扭曲和边缘模糊&#xff0c;在第4…

实验五、IPv4地址的子网划分,第1部分《计算机网络》

但凡你有点本事&#xff0c;也不至于一点本事都没有。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地址和网络掩码 的网络信息。本练习旨在让您掌握如何根据给定 IP 地址计算网络 IP 地址信息。 二、实验…

C# E2Pose人体关键点检测(OpenVINO推理)

C# E2Pose人体关键点检测(OpenVINO推理) 目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name&#xff1a;inputimg tensor&#xff1a;Float[1, 3, 512, 512] --------------------------------------------------------------- Ou…