nginx架构和安装

Netcraft公司web网站服务器分析

https://www.netcraft.com/resources/?type=blog

apache

官网 https://www.apache.org/

apache 架构演进

Apache prefork 模型

Apache worker 模型

Apache event 模型

Nginx 高性能的 Web 服务端

官网 https://nginx.org/

Tengine http://tengine.taobao.org/

OpenResty https://openresty.org/cn/

用户访问体验统计

互联网存在用户速度体验的1-3-10原则,即1秒最优,1-3秒较优,3~10秒比较慢,10秒以上用户无法接 受。用户放弃一个产品的代价很低,只是换一个URL而已

影响用户体验的因素

客户访问IO流程

零拷贝

传统 Linux中 I/O 的问题

MMAP ( Memory Mapping )

SENDFILE

DMA辅助的 SENDFILE

nginx进程结构

Nginx是多进程组织模型,而且是一个由Master主进程和Worker工作进程组成

主进程(master process)的功能
工作进程(worker process)的功能

nginx模块介绍

核心模块:core module
标准模块:
 HTTP 模块: ngx_http_*
 HTTP Core modules   #默认功能
 HTTP Optional modules #需编译时指定
 Mail 模块: ngx_mail_*
 Stream 模块 ngx_stream_*
第三方模块

nginx安装

包安装

https://nginx.org/en/linux_packages.html

apt update && apt -y install nginx
apt list nginx
apt-cache madison nginx
apt install nginx=1.22.0-1~jammy
apt -L nginx


dnf info nginx
yum info nginx
yum list nginx

yum install nginx
yum -ql nginx
yum -qc nginx

编译安装

参见 nginx编译安装脚本

用法帮助

nginx -h
nginx -t  #检查配置文件语法
nginx -T #打印出配置文件
nginx -s  stop|quit|reopen||reload|  #发送信号
nginx -V #查看编译参数
nginx -v #查看版本


也可以通过kill 给nginx master 进程发信号

立刻停止服务:stop,相当于信号SIGTERM,SIGINT
优雅的停止服务:quit,相当于信号SIGQUIT
平滑重启,重新加载配置文件: reload,相当于信号SIGHUP
重新开始记录日志文件:reopen,相当于信号SIGUSR1,在切割日志时用途较大
平滑升级可执行程序:发送信号SIGUSR2,在升级版本时使用
优雅的停止工作进程:发送信号SIGWINCH,在升级版本时使用

nginx平滑升级和回退

平滑升级四个阶段

具体步骤