nginx,tomcat,apache区别

痞子三分冷 提交于 2019-12-01 04:20:01
服务器ApacheNginxTomcat
类型 Http服务器HTTP Server Http服务器HTTP Server 应用服务器Application Server
资源 静态资源? 静态资源 动态资源

名词解释:

1、 Runtime 运行环境

2、 Interface 接口

3、 JVM是Java Virtual Machine(Java虚拟机)的缩写

1、Servlet是小服务程序

2、JSP ,Java Server Pages,即Java服务端的网页,是动态的网页

3、HTTP服务器本质上也是一种应用程序,通过绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请求,这样客户端(一般来说是IE, Firefox,Chrome这样的浏览器)就能够通过HTTP协议来获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等等资源。下图描述的就是这一过程:

 

 

 

 

Apache/Nginx( /əˈpætʃɪ/) 应该叫做 HTTP Server,即安装后生成httpd服务。

Tomcat (/ˈtɒmkæt/)则是一个 Application Server,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)

静态和动态的理解:

(1)     Tomcat能够动态的生成资源并返回到客户端。是因为如果想要使用Java程序来动态生成资源内容,使用这一类HTTP服务器很难做到。Java Servlet技术以及衍生的Java Server Pages技术可以让Java程序也具有处理HTTP请求并且返回内容(由程序动态控制)的能力,Tomcat正是支持运行Servlet/JSP应用程序的容器(Container)

 

 

 

(2)     Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源。

(3)     动态资源则与之相反,在不同的时间、不同的客户端访问得到的内容是不同的。如包含显示当前时间的页面,显示当前IP地址的页面

(4)     Apache HTTP Server和Nginx本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容)。

 

Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下指责:

  • 管理Servlet程序的生命周期
  • 将URL映射到指定的Servlet进行处理
  • 与Servlet程序合作处理HTTP请求——根据HTTP请求生成HttpServletResponse对象并传递给Servlet进行处理,将Servlet中的HttpServletResponse对象生成的内容返回给浏览器


虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:

  • 动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。
  • 负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理
  • 打个比方:

        nginx / apache是一辆卡车,上面可以装一些东西如html等(静态的)。但是不能装水(动态的),要装水必须要有桶(容器),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以放在车上,也可以不放在卡车上。

    客户端(浏览器):人;

        nginx / apache:卡车;

    静态页面:毛巾;

    tomcat:水桶;

    动态页面:水。

    人要拿毛巾,可以直接从卡车上拿取;

        人要拿水,需要先通过卡车找到车上的桶,才能取得(桶可以不放在车上,把桶单独放在别的地方人也可以取到水);

nginx和apache的区别

Nginx 相对 Apache 的优点:
轻量级,同样起 web 服务,比 apache 占用更少的内存及资源;
抗并发,nginx 处理请求是异步非阻塞的,支持更多的并发连接,而 apache 则是阻塞型的,在高并发下 nginx
能保持低资源低消耗高性能;

(最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程)
配置简洁;
高度模块化的设计,编写模块相对简单;
社区活跃。
Apache 相对 Nginx 的优点:
rewrite ,比 nginx 的 rewrite 强大;
模块超多,基本想到的都可以找到;
少 bug ,nginx 的 bug 相对较多;
超稳定。

 

链接:https://www.zhihu.com/question/32212996/answer/87524617

 


 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!