十面九问!Tomcat、Nginx、Apache的区别_各自的优点是什么_

面试题:

Tomcat 、Nginx 、Apache 的区别? 各自的优点是什么? 什么场景下用合适?

面试官心理分析

主要是看看应聘人员对常用web 容器是否熟悉,常用的web 容器基本上也就几个(这里指的是linux下常用的Web 容器,当然还有windows 下的IIS 以及 商业的WAS),应聘人员需要简单的回答出三者的区别、大致的应用场景 以及各自的优势。

也可以让应聘人员简单地画出上家公司维护的一个业务拓扑(如果涉及到商业机密,就跳过...),让他从业务的层面讲解下对这套架构的理解(优缺点、高可用如何实现的?是否存在系统瓶颈等),如果这套架构是由他自己搭建的,那他一定会非常熟悉,而且也可以测试下他的表达能力

面试题剖析

Apache

Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。

Apache相对于Tomcat的优点:

服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。

Apache 相对于 Nginx 的优点:

apache的 rewrite 比nginx 的强大;支持动态页面;支持的模块多,基本涵盖所有应用;性能稳定。

缺点:配置相对复杂,自身不支持动态页面。

Tomcat:

Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。

缺点:可以说Tomcat 只能用做java服务器

优点:动态解析容器,处理动态请求,是编译JSP/Servlet的容器。

Nginx

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。

nginx相对于apache的优点:

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

缺点:Nginx 只适合静态和反向代理。

应用场景:

反向代理负载均衡HTTP服务器(包含动静分离)正向代理

三者之间的区别:

1)Nginx和tomcat的区别

nginx常用做静态内容服务和代理服务器,直接外来请求转发给后面的应用服务器(tomcat,Django等),tomcat更多用来做一个应用容器,让java web app泡在里面的东西。

注意:nginx只是把请求做了分发,不做处理!!!

2)nginx和Apache的区别

Apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。

Nginx轻量级,抗并发,处理静态文件好Apache超稳定,对PHP支持比较检单,nginx需要配合其他后端用,处理动态请求有优势,建议使用前端nginx抗并发,后端apache集群,配合起来。

应用场景分析:

Tomcat结合Apache、Nginx实现高性能的web服务器

Tomcat虽然是一个servlet和jsp容器,但是它也是一个轻量级的web服务器。它既可以处理动态内容,也可以处理静态内容。但是,tomcat的最大优势在于处理动态请求,处理静态内容的能力不如apache和nginx,我们可以利用nginx的高并发,低消耗的特点与tomcat一起使用。

通常情况下,tomcat与nginx、Apache结合使用,nginx、apache既可以提供web服务,也可以转发动态请求至tomcat服务器上。通常nginx、apache只提供代理的功能,也就是转发请求至tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。其架构类似于如下图:

网站崩溃找不到原因?平台搭建无从下手?热门技术不想落伍?想要变强找不到资料?

加入[IT拯救联盟],让大牛和同伴拯救你,带你装x带你飞。群里有定期干货分享、大牛专业解答、实用IT工具优选.....

私信小编“联盟”,即可加入我们~