轻量级
ngxin 相对于 apache 来说,占用资源更少,这是高度模块化设计的优势
nginx 模块编写相对简单,各种高性能模块在社区上频繁亮相
由于 apache 是同步多进程模型,每个连接对应一个进程,而 nginx 是异步非阻塞模型,因此在资源消耗和并发能力上都优于 apache,而 apache 不仅因为在连接量大时需要为每个连接提供一个处理进程而需要消耗大量资源,进程的创建和销毁也会伴随着较大的代价
当然了,apache 的 prefork 机制在一定程度上缓解了这个问题
抗并发
与 apache 的阻塞式IO相比,nginx 使用异步非阻塞的IO模型处理请求,实现了高性能、高并发的事件处理
根本上,nginx 使用的是 epoll(linux)、kqueue(bsd),而 apache 使用的是 select IO 复用模型
当 socket 活跃数量比较高的时候,select 性能要高于 epoll,但对于 web 服务器来说,大多数连接并不会长时间处于连接通讯状态,短连接比例较大,这样的情况下,epoll 的性能要明显由于 select,而在网游服务器等长连接为主,连接少而活跃的应用场景中,select 性能就较为突出了
同时,由于 select 的性能随连接数量增长而显著下降,因此对于大量连接的应用场景,epoll 是最好的选择
配置简洁
nginx 模块编写相对简单,配置文件逻辑清晰、简洁,使用较为方便