Apache 又称:HTTP Server是Apache软件基金会的一个开放源码的网页,它是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。其特点支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,易于开发,部署方便,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。tomcat更多用来做做一个应用容器。

区别:

Nginx:   

1、nginx关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能,即直接将外来请求转发给后面的服务器(tomcat)。客户端通过 apache 访问服务器上存储的资源(HTML 文件、图片文件等等)。apache是中只是把服务器上的文件如实通过HTTP协议传输给客户端。

2.nginx是异步的,多个连接(万级别)可以对应一个进程。

3、同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能高度模块化的设计,编写模块相对简单提供负载均衡。

Tomcat:

1、Tomcat应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。 应用服务器往往是运行在apache的背后,执行应用,将动态的内容转化为静态的内容之后,通过apache将请求分发到客户端。

Apache:

1、 Apache是同步多进程模型,一个连接对应一个进程。

2、支持动态页面;支持的模块多,基本涵盖所有应用;性能稳定,而nginx相对bug较多。

3、Apache超稳定,对PHP支持比较简单,nginx需要配合其他后端用。

总结:

1)Nginx优点:负载均衡、反向代理、处理静态文件优势,这也就是为啥java服务器Tomcat前面先要经过Nginx服务器处理一波,(只转发请求,不做其他操作,可以看下上面的反向代理的解释),Nginx并发性比较好,CPU内存占用低。

2)Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片,当然读写能力比较强,如果rewrite(读写)频繁,那还是Apache较适合,比较稳定,处理动态有优势。前提是没有Tomcat,也就是说不是java服务端。

3)Tomcat:动态解析容器,处理动态请求,是编译JSP、Servlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。

nginx处理静态文件好,耗费内存少;
动态请求由apache去做,nginx只适合静态和反向;
Nginx适合做前端服务器,负载性能很好;
Nginx本身就是一个反向代理服务器 ,且支持负载均衡 

静态处理能力:

Nginx(至少是Apache3倍)>Apache>Tomcat