Nginx和Apache是我们常用的两款开源的Web服务器软件,我们一般用哪个好呢?Nginx和Apache最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程;而 nginx 是异步的,多个连接可以对应一个进程。下来我们究竟哪个好?我们又应该如何选择呢?
Nginx最早俄罗斯人开发并且使用,安装起来比较简单,是一个高性能的HTTP和反向代理Web服务器,同时也提供了 IMAP/POP3/SMTP服务。与Apache相比,它虽然起步晚,但在性能上一点不逊色,能与静态文件配合得很好,可执行负载均衡器和反向代理功能,并且是轻量级,占用非常少内存及资源。
Apache,音译为阿帕奇,是目前世界使用排名第一的Web服务器软件,也是一个比较早期的一个web服务器,而Nginx诞生的时间比较短,它可以兼容大多数服务器操作系统并可以流畅的运行,由于其多平台和安全性两点优势被开发者广泛使用。Apache几乎是所有流行的Linux发行版上的预安装软件,Apache起步时间比较长,有非常多的人在维护,许多开发者也喜欢Apache的可定制性及通过加载各种模块来定制自己的服务器环境。
Nginx与Apache的优缺点比较
1.Nginx拥有优秀的架构设计,包括模块化设计、事件驱动架构、请求的多阶段异步处理、管理进程与多工作进程设计等,这意味着它可以在有可用资源时一次处理多个请求,一次可多个连接(万级别)可以对应一个进程,性能优越。相反,Apache通过MPM(多处理模块)一次处理一个事件,它会为每个事件生成子进程,并且一次只处理一个连接,当用户请求过多时,开启的进程较多,占用内存大,每秒最多的并发连接请求最多不超过3000个;
2.Nginx动态能力比不上Apache,Apache的Rewrite比Nginx强大,但在静态资源处理上,Nginx性能比Apache高三倍以上;
3.Apache比Nginx更成熟,更稳定,Bug少,Nginx的Bug相对较多;
4.Nginx采用集中式方式,这意味着用户无法在一个主文件之外配置服务器,不需要处理请求来检查每个目录中的配置文件,缩短了请求处理时间,具有更高的性能。Apache允许通过放置在Web树中的特殊文件来分散管理配置,该特殊文件通常称为.htaccess文件,它发出请求时,Apache将检查文件路径的每个元素。
如果我追求高性能那选择Nginx,Nginx简单,性能好,占用资源少,配置低的服务器首选;要稳定的选择Apache,Apache比Nginx成熟,各种功能模块实现比Nginx好,可配置项多,但占用资源多,配置低的服务器跑起来非常吃力。一般大型网站是,前端Nginx抗并发,后端Apache集群,这样配合起来会更好。