一文看懂Tomcat、Nginx和Apache的区别

服务器
HTTP服务器本质上也是一种应用程序——它通常运行在服务器上,绑定服务器的IP地址并监听某个TCP端口,接收并处理HTTP请求,这样客户端(如Chrome这样的浏览器)就能通过HTTP协议获取服务器上的网页(HTML格式)、文档(PDF格式)等资源。
  • 这三者都是web server,各自有什么特点?
  • 他们之间的区别是什么?
  • nginx 和 tomcat性能上有何异同?
  • tomcat用在Java后台程序,难道不能用apache和nginx?

题目中的Apache其实是Apache HTTP Server Project,和Nginx一样都是开源的HTTP服务器软件。

HTTP服务器本质上也是一种应用程序——它通常运行在服务器上,绑定服务器的IP地址并监听某个TCP端口,接收并处理HTTP请求,这样客户端(如Chrome这样的浏览器)就能通过HTTP协议获取服务器上的网页(HTML格式)、文档(PDF格式)等资源。

强大的Java类库也实现了简单的HTTP服务器供开发者使用:

  • HttpServer (Java HTTP Server )

使用这种类库能很容易的运行一个HTTP服务器,它们都能通过绑定IP地址并监听TCP端口来提供HTTP服务。

相比于Apache HTTP Server,Tomcat能动态生成资源并返回给Client。Apache HTTP Server和Nginx都能将某一文本文件内容通过HTTP协议返回到客户端,但该文本文件的内容固定——无论何时、任何人访问它得到的内容都完全相同,即静态资源。

动态资源则在不同时间、客户端访问得到的内容不同。

Apache HTTP Server和Nginx本身不支持生成动态页面,但可以通过其他模块来支持(例如通过Shell、PHP、Py脚本动态生成内容)。若想要使用Java程序动态生成资源内容,使用这类HTTP服务器就很难。Java Servlet及JSP可以让Java程序也能处理HTTP请求并且返回内容(由程序动态控制)的能力,Tomcat正是支持运行Servlet/JSP应用程序的容器(Container):

Tomcat运行在JVM之上,和HTTP服务器一样,绑定IP地址并监听TCP端口,而且:

  • 管理Servlet程序的生命周期
  • 将URL映射到指定Servlet进行处理
  • 与Servlet程序合作处理HTTP请求

根据HTTP请求生成HttpServletRequest对象并传递给Servlet进行处理,将Servlet中的HttpServletResponse对象生成的内容返回给浏览器

虽然Tomcat也可认为是HTTP服务器,但通常它仍和Nginx协作:

  • 动静态资源分离

使用Nginx的反向代理分发请求:所有动态资源的请求交给Tomcat,静态资源的请求(例如图片、CSS、JS文件等)直接由Nginx返回给浏览器

  • 负载均衡

当业务压力增大时,可能一个Tomcat的实例不足以处理,可启动多个Tomcat实例进行水平扩展,Nginx负责负载均衡,将请求分发到各个不同的实例进行处理

本文转载自微信公众号「JavaEdge」,可以通过以下二维码关注。转载本文请联系JavaEdge公众号。

 

 

责任编辑:武晓燕 来源: JavaEdge
相关推荐

2017-07-28 09:11:14

HIVEHBASE区别

2021-04-15 09:41:30

云计算PAASSAAS

2020-03-31 14:40:24

HashMap源码Java

2019-09-02 07:42:50

nginx服务器跨域

2017-05-31 11:47:21

互联网

2016-08-18 00:21:12

网络爬虫抓取网络

2024-08-12 12:30:27

2023-06-27 07:04:39

2023-07-07 11:36:29

人工智能基础模型

2021-08-02 06:56:19

TypeScript编程语言编译器

2023-07-14 08:00:00

ORMRust ORMSQL

2018-02-02 11:17:42

IaaSPaaSSaaS

2019-07-01 09:22:15

Linux操作系统硬件

2019-05-22 09:50:42

Python沙箱逃逸网络攻击

2020-07-31 12:52:40

OLEDQLEDMicroLED

2019-07-09 10:14:04

云计算行业科技

2019-07-11 11:39:31

云计算操作系统IaaS

2018-05-31 09:46:04

车联网智能交通ITS

2019-07-05 13:19:43

技术团队组建绩效考核

2024-04-10 13:50:41

CentOSUbuntu操作系统
点赞
收藏

51CTO技术栈公众号