介绍完Nginx的功能,本篇介绍一下Nginx的扩展,Nginx与Tomcat的区别。
一、Nginx简介
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
- 特点
- 占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
- Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
- 在连接高并发的情况下,Nginx是Apache服务不错的替代品。
- 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
- 无缓存的反向代理加速,简单的负载均衡和容错。
- 支持 SSL 和 TLSSNI。
二、Tomcat简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
- 特点
- Tomcat运行时占用的系统资源小,扩展性好,支持负载均衡与邮件服务等开发应用系统常用的功能。
- Tomcat是一个开源的web服务器 。
- Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
三、两者的优缺点
1.1 Nginx优点
- 安装非常简单。
- 配置文件非常简洁(还能够支持perl语法)。
- Nginx 启动特别容易,并且几乎做7*24间断运行即使运行数月也需要重新启动,还能够间断服务情况下进行软件版本升级 。
- 抗并发nginx 处理请求异步非阻塞。
- 高度模块化的设计,编写模块相对简单 。
- Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
1.2 Nginx缺点
- 模块相比Apache要少。
- 动态请求处理相对较弱。
- bug相比Apache要多。
2.1 Tomcat优点
- 兼有可扩展性和安全性。假如单位时间内访问请求数急剧增加,可以用相对较低的费用增加前端的能力。
- 比较容易扩展。由于是通过在这台功能强大的服务器上运行的单个servlet容器,实际上也就不需要考虑session状态在分布式环境下的维护这类复杂的问题。
- 台后端服务器在外界不可以访问,网上的黑客只能访问前端的web服务器,不能直接访问后端的应用服务器,这就提高了安全性。但这并不意味着黑客们不能通过网络浏览器进行其它形式的攻击。
2.2 Tomcat缺点
- Tomcat更复杂。
- Tomcat静态资源请求处理弱。
- Apache与Tomcat常常整合使用,可以理解Tomcat为Apache的一种扩展。
四、两者的区别
- 应用
Nginx一般在web网站中做静态(内存耗费少),本身不具备动态解析功能,需要配置其他插件;而Tomcat一般是做动态解析才使用,支持JSP的解析。 - 性能
Nginx在静态方面支持5万的并发;而Tomcat不做系统调优支持并发少Nginx三分之二。 - 量级
两者都属于轻量级,但Nginx比Tomcat更精简,占用更少的内存及资源;Tomcat反之。 - 读写
Tomcat的rewrite(改写)比Nginx强大。 - 核心区别(这项是相比于Apache)
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程。 - 其他
Nginx适合做前端服务器,负载性能很好。
Nginx本身就是一个反向代理服务器,且支持负载均衡。
五、应用场景
在实际项目中,Tomcat主要用来处理动态的内容,比如jsp文件。静态的html/图片等资源就可以交给Nginx来处理,期间也用到了分发。
对于有多台服务器时,用一台服务器装Nginx作为代理服务器,把所有请求汇集到这里进行分发到其他服务器。而对于一台服务器实现动静态分离时,则需要在一台服务器上同时搭建Nignx和tomcat,并进行整合。