一、Nginx的功能
1、功能特性
Nginx功能丰富,既可以作为HTTP服务器,也可以作为反向代理服务器,能够快速响应静态页面(HTML)的请求,使用模块化设计风格,同时支持更多第三方模块。
1.1、Nginx的特性如下
* 模块化设计、较好的扩展性 ,从1.9版本以后支持(部分)模块动态装卸载
* 高可靠性,有一个master主控进程,主控进程(master)负责生成多个worker
* 低内存消耗,一个worker进程负责响应多个请求
* 支持热部署、不停机而更新配置文件
* 支持平滑升级软件版本
* 支持事件驱动机制,支持异步IO,支持NMAP内存映射
1.2、Nginx的基本功能
A:基本的HTTP服务
* 静态资源的web服务器
* 打开并自行管理文件描述符缓存
* 提供反向代理服务(HTTP、SMTP、POP3协议)
* 支持HTTPS(安全套接层协议SSL)
* 使用Nginx的模块化特性提供过滤器功能
* 支持缓存和负载均衡机制
* 支持FastCGI,能和php-fpm结合,组成LNMP,同时支持uWSGI(与Python结合)
* 支持SSI机制,图像的大小调整
B:高级HTTP服务
* 支持基于名称和IP的虚拟主机
* 支持Keepalive机制
* 支持平滑升级(无须中断正在处理的请求)
* 支持自定义访问日志格式,支持使用日志缓冲区提供日志存储性能
* 支持URL 重新、支持路径别名
* 支持基于IP和用户的访问控制
* 支持速率限制、并发数限制等
* 支持FLV流和MP4流
3、Nginx的基本架构
一个Master(主控)进程,生成一个或多个worker进程
事件驱动模型:Epoll(基于边缘触发)
复用器: select、poll,rt signal
支持Sendfile、Sendfile64、AIO、NMAP机制
![nginx架构](https://box.kancloud.cn/08522fead126aeaa89f870917f7726e2_805x506.png)
Nginx的工作模式: 基于非阻塞、事件驱动机制,有一个master进程生成多个worker线程,每个worker响应n个请求
4、sendfile机制说明:
当用户的请求过来,先由网卡设备接收到,通过注册监听在80端口的内核捕获到,然后使得向用户空间的web服务进行转发,web服务器收到请求,接下来向内核发起(IO)请求,接下来内核负责把文件从磁盘加载到内核内存,然后从内核内存复制一份到进程内存、然后web服务器构建响应报文,把内容从进程内存拷贝到内核内存,然后通过网卡发送出去
Sendfile机制就是: 当内核获取到资源后,直接构建响应报文,通过网卡响应给客户端
5、Nginx的进程模型
Nginx在启动后,会有一个master进程和多个worker进程
A : Master进程
生成和管理各worker进程,用来接收外界的信号,并向各worker进程发送信号、监控worker进程的运行状态
master进程充当整个进程组与用户的交互接口
Nginx的平滑升级(kill -HUP pid,则是告诉nginx,从容地重启nginx,我们一般用这个信号来重启nginx,或重新加载配置,因为是从容地重启,因此服务是不中断的。master进程在接收到HUP信号后是怎么做的呢?首先master进程在接到信号后,会先重新加载配置文件,然后再启动新的worker进程,并向所有老的worker进程发送信号,告诉他们可以光荣退休了。新的worker在启动后,就开始接收新的请求,而老的worker在收到来自master的信号后,就不再接收新的请求,并且在当前进程中的所有未处理完的请求处理完成后,再退出)
B: Worker进程
负责处理客户端的web请求
worker进程的个数是可以设置的(一般为CPU核心数-1),后期的nginx版本支持设置为auto
![nginx进程模型](https://box.kancloud.cn/1b98db7341741540a7297a4e7391bbc9_861x436.png)
- 第一部分:Nginx Web服务
- 第一章: Nginx的初探
- 第二章:Nginx的安装部署
- 第一节:在centos6上通过Yum安装Nginx
- 第二节:在Centos7上通过Yum安装nginx
- 第三节:编译安装Nginx服务
- 第四节: Nginx编译参数详解
- 第五节: Nginx的启动脚本
- 第六节:Nginx的shell脚本安装
- 第七节:nginx服务的平滑升级
- 第三章:Nginx服务基础配置
- 第一节: 配置运行nginx服务器用户
- 第二节:配置运行生成的worker processes进程数
- 第三节:配置Nginx进程PID存放路径
- 第四节:定义MIME类型
- 第五节:自定义nginx的访问日志
- 第六节:主配置段(main)常用的配置
- 第七节:http段(核心)常用的配置命令
- 第八节:配置nginx中的location段
- 第九节: 基于IP的访问控制
- 第十节:基于用户的访问控制
- 第十一节:Nginx定义status状态页
- 第十二节:Nginx服务器Rewrite重写
- 第十三节:Nginx服务配置防盗链
- 第十四节:nginx软件的优点
- 第四章:Nginx服务器的优化配置
- 第一节:nginx.conf配置文件基本参数优化
- 第二节:fastcgi调优
- 第三节:Gzip调优
- 第四节:expires缓存调优
- 第五节:内核参数优化
- 第六节: Nginx之——413 修改上传文件大小限制
- 第五章:Nginx虚拟主机的配置
- 第一节:基于名称的虚拟主机
- 第二节:通过shell脚本添加虚拟主机
- 第六章:Nginx常用模块指令详解
- 第一节:ngx_http_realip_module
- 第二节:http_image_filter_module
- 第三节:tengine中配置consistent hash module
- 第四节:ngx_http_userid_module
- 第七章:Nginx服务器配置HTTPS访问
- 第八章: Nginx服务器日志切割
- 第二部分:Nginx负载均衡反向代理服务
- 第一章:Nginx进阶参数详解
- 第一节:proxy_module参数详解
- 第二节:upstream_module参数详解
- 第四章:Nginx反向代理服务
- 第一节:Nginx反向代理配置参数详解
- 第二节:Nginx反向代理服务配置案例
- 第三节:Nginx缓存
- 第四节: Nginx中fastcgi模块
- 第五节:nginx+fastcgi实现动静分离架构
- 第五章:Nginx负载均衡
- 第一节:ngx_http_upstream_module常见指令
- 第二节:调度方法
- 第三节:健康状态检查