👞Nginx主要的几个功能:

    • Web服务器
    • Apache 负载均衡
    • 反向代理
🛷Web 服务器的分类:
软件使用情况排行榜:

其中现在几乎被淘汰的Apache是最经典的Web服务器,Apache prefork的软件模型如下:

优点:稳定

缺点:并发性差,不适用于高并发场景

Nginx的工作场景:

I/O模型

按照通信机制:

  1. 同步
  2. 异步

网络I/O服务

  • 阻塞型I/O模型
  • 非阻塞型I/O模型
  • 多路复用型I/O模型
  • 信号驱动型I/O模型
  • 异步型I/O模型

🌮零拷贝

what 是零拷贝?

MMAP:系统调用让进程之间通过映射实现同一个文件的文件共享,而MMAP则是一种内存映射的方法。

 

why 零拷贝解决了什么问题?

Linux标准的I/O接口,传统的方式是通过"数据拷贝",这种"中间缓存"机制的优点是减少磁盘I/O操作,缺点是内核态切换频繁会消耗大量的CPU资源,极大影响数据的传输性能。

"零拷贝"并不是真正意义上的“零”拷贝,而是一种极限思想。

 

🥙Nginx 架构:

同步 vs 异步

同步:需要自己确认

异步:自动反馈确认

 

同步阻塞:不能离开,直到确认完成

异步非阻塞:中途离开,不断查看,直到确认完成

 

异步阻塞:意义不大

异步非阻塞:可离开,目标自动反馈

🎈🦺Nginx 和Apache 的区别?(面试题

Nginx的特点:事件驱动、异步I/O,直接内存映射和文件传输,可实现高新能的负载均衡

Apache 动态模块加载

Ngiinx 静态模型

Nginx "偶数"为稳定版

🎿how 安装Nginx

Nginx centos7在“equl”源中(更新会更快),而centos8则更变为"APPStream"光盘内。

"yum"安装更新版本的"Nginx"版本

http://nginx.org/en/download.html

 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
centos8中
yum info nginx    //查看旧版本
cat > /etc/yum.repos.d/nginx.repo
#
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
#


yum list nginx    //更新Nginx版本

2.  安装稳定版"Nginx"版本

yum install nginx
rpm -ql nginx   //查看Nginx文件   核心文件:/etc/nginx/nginx_conf
systemctl enable --now nginx   //启动Nginx软件
ss -ntlp    //查看端口
pstree -p    //查看进程树,可以发现没有"线程"
nginx -V       // 查看Nginx的版本

3. yum官方源安装

cat /etc/yum.repos.d/nginx.repo
dnf info nginx  //查看版本信息
yum -y install nginx    //安装nginx

🧀Nginx 优点:

Nginx 的异步I/O使得Nginx提高"高并发"的需求,并使得没有线程和进程数很少,让Nginx不需要像Apache一样频繁的在"进程"-"内核"之间来回切换,极大的节省了CPU的资源。

 

🍨编译安装 Nginx

官方源码包下载地址:https://nginx.org/en/download.html

具体安装步骤:

yum -y install gcc pcre-devel openssl-devel zlib-devel
useradd -s /sbin/nologin  nginx    //创建Nginx专有用户
cd /usr/local/src/


wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf nginx-1.18.0.tar.gz


wget https://nginx.org/download/nginx-1.20.2.tar.gz
tar xf nginx-1.20.2.tar.gz


cd nginx-1.20.2/
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 && make install 
chown -R nginx.nginx /apps/nginx   //修改权限


、
find src -type f | xargs cat |wc -l  //统计源码行数
 

Nginx 常用模板

Nginx 更新回滚日志

nginx -s reopen // 日志滚动,重新导向日志定向为——生成新的文件。

Nginx 关闭进程

nginx -s quit     // 关闭窗口,直至将已有的进程执行完毕

👒Nginx 平滑升级和回滚

平滑升级:在用户访问的同时,让用户保持访问,平滑的完成软件升级更新。

cat /apps/nginx/run/nginx.pid    //查看端口
ps auxf|grep nginx     //
kill -USR2 `cat /apps/nginx/run/nginx.pid  //平滑升级
ps auxf|grep nginx   //查看nginx
lsof -i :80      //查看监听端口
kill -QUIT `cat/apps/nginx/run/nginx.pid.oldbin`  //优雅关闭

🥌 Nginx 常见配置详解 & 高级功能使用

how 如何优化Nginx的设置
ps aux | grep nginx     //查看Nginx 的进程
1.启动Nginx 的核心数量 = cpu颗粒数(减少cpu工作进程不同的来回跳转,减少cpu的资源分配和内存管理)
ps aux pid,cmd,psr | grep nginx     //查看cpu和Nginx是否一致
2.cpu和Nginx worker的进程一一静态绑定

accept_mutex on : worker轮流,"惊群":只有一个服务,但是worker全部到位,最后烽火戏诸侯,只有一个worker被选用。

multi_accept on : Nginx服务器每个工作进程可以同时接受多个新的网络链接

Nginx的配置文件[优化性能]——全局配置的优化配置设置
vim /apps/nginx/conf/nginx.conf
添加配置内容如下:
accept_mutex on
multi_accept on