概述
Tomcat和Apache Http Server(下称Apache)还有Nginx总的来说都是Http服务器(Http Server)。
Http服务器
Http服务器本质上是一种应用程序,其通常运行在服务器上,绑定服务器的ip地址并监听某一个tcp端口接收并处理Htpp请求。用户使用客户端(浏览器)通过HTTP协议获取服务器上的资源(网页、文档、媒体文件等)。
Tomcat和Apache的差异
Tomcat:能够动态生成资源并返回给客户端。
- 这里的动态生成是指会返回的内容会因为请求的参数不同,获得的内容也随之不同
Apache: 能将某一个固定文本的内容返回给客户端。
- 这种固定的资源。谁拿都一样,故称之为静态资源
Nginx和Apache是同理的
- 这种固定的资源。谁拿都一样,故称之为静态资源
Apache HTTP Server和Nginx本身不支持生成动态页面,但他们可通过其他模块来支持(如PHP、Python、Node等脚本程序来动态生产内容)。
总所周知java并非脚本语言(java又要编译(class)又要解释(jvm)的语言),如果想用java程序来动态生产资源,Apache很难做到。而JavaServlet和JSP让Java程序也具有处理请求的能力,这时候Tomcat就出来了。Tomcat作为Servlet的容器,与Servlet合作处理HTTP请求。
补充
虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:
动静态资源分离:运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求直接由Nginx返回。
负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例(Tomcat)进行处理