Nginx是一个HTTP和反向代理服务器,邮件代理服务器以及第四层流量(TCP/UDP)代理服务器。
Nginx的优点
可以高并发连接;官方测试Nginx可以单服务端支撑5万多连接,在实际的生产环境中可以支撑2-4万并发连接数。
Nginx是个高性能的Web服务器,反向代理服务器,Nginx足够轻量,对比Apache来说,Nginx使用的硬件资源足够低,配合FastCGI(Nginx+PHP)的情况下,当前3万个并发连接下,Nginx消耗的内存不足300MB,加上64个进程的PHP-CGI(每个CGI消耗20MB的内存)消耗1280MB,整个Web服务消耗1.5GB左右的内存;
使用Nginx的国际大厂
Netfix网站服务器截图
Bilibili网站服务器截图(Tengine是阿里巴巴自己基于Nginx二次编译给淘宝和天猫应对双十一的优化版)
Nginx的架构
nginx工作(worker)码包括核心和功能模块。 nginx的核心是负责维护严格的运行循环,并在请求处理的每个阶段执行模块代码的适当部分。 模块构成了大部分的演示和应用层功能。 模块读取和写入网络和存储,转换内容,执行出站过滤,应用服务器端包含操作,并在代理启动时将请求传递给上游服务器。
nginx的模块化架构通常允许开发人员扩展一组Web服务器功能,而无需修改nginx内核。 nginx模块略有不同,即核心模块,事件模块,阶段处理程序,协议,可变处理程序,过滤器,上游和负载平衡器。nginx不支持动态加载的模块; 即在构建阶段将模块与核心一起编译。
在处理与接受,处理和管理网络连接和内容检索相关的各种操作时,nginx在基于Linux,Solaris和BSD的操作系统中使用事件通知机制和一些磁盘I/O性能增强,如:kqueue,epoll, 和事件端口。 目标是为操作系统提供尽可能多的提示,以便及时获取入站和出站流量,磁盘操作,读取或写入套接字,超时等异步反馈。 对于每个基于Unix的nginx运行的操作系统,大量优化了复用和高级I/O操作的不同方法的使用。
nginx架构的概述如下图所示 (来自网络)
评论