🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
一、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)