Nginx编译安装+Nginx模块

99 阅读4分钟

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

I/O模型简介

同步/异步(消息反馈机制):

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

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

image.png

阻塞/非阻塞:

关注调用者在等待结果返回之前所处的状态

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

image.png

多路复用I/O型

image.png

多路复用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 事件,可以在大并发情况下具有较高的性能优势。

异步I/O模型

image.png

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

事件模型 select poll epoll

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

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

优缺点

image.png

区别

image.png

NGINX概述

简介

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

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

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

NGINX和APACHE的区别?

image.png

核心区别:

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

什么是零拷贝?

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

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

Nginx模块

安装方式

方式一:yum安装

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

方式二:编译安装 (推荐使用)

前置准备

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

编译安装nginx

tar xf nginx-1.18.0.tar.gz 
cd nginx-1.18.0/
#解压软件包
mkdir /apps/nginx -p
​
​
./configure --help   
#查看帮助模块
​
./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    
make install
​
chown -R nginx.nginx /apps/nginx
#修改权限
​
ll /apps/nginx/
total 0
drwxr-xr-x 2 root root 333 Sep 22 12:49 conf
drwxr-xr-x 2 root root  40 Sep 22 12:49 html
drwxr-xr-x 2 root root   6 Sep 22 12:49 logs
drwxr-xr-x 2 root root  19 Sep 22 12:49 sbin

nginx开机自启(可选)

vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
systemctl daemon-reload 
#重新加载配置
systemctl enable --now nginx
#开机自启并立即启动    如果卡主是应为logs下有 nginx.pid  文件  删除即可
​
chown -R nginx.nginx /apps/nginx
#修改权限

Nginx命令 常用选项

常用选项

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

image.png

信号

#基本格式
nginx  -s 信号

image.png