介绍各个服务器前,有必要讲一下Apache与Tomcat关系,服务器间的优缺点也是相比于apache与tomcat而言。
Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP)Tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行 ,同为服务器,Tomcat的特别之处在于它还是Java的Web容器,能够处理JSP;而Apache一般是与PHP结合,并不能处理JSP。
Apache常常与Tomcat整合起来使用,Apache处理静态页面,比如Html页面,而Tomcat负责编译处理JSP页面与Servlet。
Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页如(ASP,PHP,CGI,JSP)等动态网页的就不行。如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源
优点:
1、相对于Tomcat服务器来说Apache处理静态文件速度快。
2、apache的 rewrite 比nginx 的强大
3、Apache性能稳定
缺点:
1、属于老牌重量级web服务器(重量级主要是在软件包的大小上比较大,软件的耦合度大)
2、速度、性能不及其他轻量级web服务器,并且消费内存较高。
3、使用传统的select模型,比较稳定的Prefork模式为多进程模式,需要经常派生子进程。所以消耗的cpu等服务器资源比较大。
5、配置相对复杂,自身不支持动态页面,不适合高并发场景。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。、
动态资源:在不同的时间、不同的客户端访问得到的内容是不同的,例如:
Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:
动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。
负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理
优点:
1、Tomcat是开源的Web服务器,经过长时间的发展,性能、稳定性等方面都非常好。
2、Tomcat是开源免费、功能强大易用的
3、与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。
缺点:
1、在静态页面处理能力上,Tomcat不如Apache。
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
优点:
1、Jetty可作为一个嵌入式服务器,即:如可以在应用中加入Jetty的JAR文件,应用便可以在代码中对外提供Web服务。
2、相对于Tomcat而言,Jetty更轻量级
3、Jetty 可以同时处理大量连接而且可以长时间保持这些连接。例如像一些 web 聊天应用非常适合用 Jetty 做服务器,像淘宝的 web 旺旺就是用 Jetty 作为 Servlet 引擎。
缺点:
1、在处理少数非常繁忙的连接上没有Tomcat强,也就是说连接的生命周期如果短的话,Tomcat 的总体性能更高
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。
Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。
优点:
1、轻量级,高性能http和反向代理服务器。
2、高并发连接达到2-4万个,内存、cpu等系统资源消耗低。Rewrite重写规则(根据域名,URL的不同将HTTP请求分到不同的后端服务器群组),内置的健康检查功能(Nginx Proxy 后端的某台web服务器宕机也不会影响前端访问),节省带宽(支持GZIP压缩,可以添加浏览器本地缓存的Header头)。
3、比apache占用更少的内存及资源
4、 Nginx 静态处理性能比 Apache 高 3倍以上
5、安装非常简单 , 配置文件非常简洁(还能够支持perl语法)
缺点:
1、nginx处理动态请求鸡肋般动态请求要apache去做nginx只适合静态和反向
2、rewrite频繁不如Apache