Nginx、Tomcat、Apache的对比

一.Nginx是什么

Nginx同Apache一样都是一种WEB服务器,通过HTTP协议提供服务

Apache要比Nginx早,早期的互联网环境访问量不大,所以Apache由于稳定、开源、跨平台等特点,发展成了第一大服务器

后来随着并发增加,俄罗斯人开发了Nginx,由于其开源、高性能等特点,Nginx迅速被广泛传播

Nginx主要是为了提供高并发的Http服务,另外Nginx也可以作为反向代理进行负载均衡的实现

 

二.什么是反向代理

先说下正向代理,正向代理就是访问facebook等网站,须要使用代理服务器,这就是正向代理

反向代理:由于访问量大,所以facebook 往往会部署多台服务器,那么浏览器访问服务器的时候需要一个代理来进行负载均衡的处理,这个代理就是Nginx,也就是负载均衡器,这个过程相当于是为了多台服务器做了代理,因为已经有正向代理了,所以取了个名字来表明是代理服务器的,就被称之为反向代理,说实话这个反向代理的名字取得误导了很多人,其实就是个服务代理

所以正向代理就是代理客户端,而反向代理就是代理多个服务器,本质的流程都是客户端-->访问服务器,但正反并不是指流程的正反,而是指被代理对象的不同

 

 

Apache,Tomcat,Servlet是什么

什么是Apache?
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器软件之一

什么是Tomcat?
是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,实现了对Servlet和JavaServer Page(JSP)的支持。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器

什么是Servlet?

Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。最早支持Servlet标准的是JavaSoft的Java Web Server。

通用Servlet
一般来说,通用Servlet由javax.servlet.GenericServlet实作Servlet界面。程序设计人员可以通过使用或继承这个类来实现通用Servlet应用。

HttpServlet
javax.servlet.http.HttpServlet实现了专门用于响应HTTP请求的Servlet,提供了响应对应HTTP标准请求的doGet()、doPost()等方法。
 

 

三.Nginx和Apache的具体区别

Nginx:
免费开源,轻量级,高并发,配置简洁,nginx处理请求是异步非阻塞的,而apache 则是阻塞型的,Nginx静态处理性能比 Apache 高 
Apache :
比较稳定 ,组件比 Nginx 多

 

四.(Nginx,Apache) 和Tomcat的区别

我们已经知道Nginx和Apache是一个类型的服务器,和tomcat是有本质区别的

比较 1. Apache与Tomcat的比较

相同点: 两者都是Apache基金组织开发的 两者都有HTTP服务的功能 两者都是免费的

不同点: Apache是HTTP服务器,只支持静态网页如(ASP,PHP,CGI,JSP)等动态网页的就不行

而Tomcat是一个Java应用程序服务器 , 侧重于Servlet引擎 ,但对静态网页不太理想;

总结:Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP)容器,但是可以独立于Apache运行。
实际使用中Apache与Tomcat常常是整合使用: 如果客户端请求的是静态页面,则只需要Apache服务器响应请求。 如果客户端请求动态页面,则是Tomcat服务器响应请求。

Tomcat和Nginx也常常结合使用,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理

Nginx优点是静态性能好,高并发,开源免费,轻量配置简介,是目前的主流服务器,但是依然会和Tomcat结合使用

Tomcat则是主要处理动态页面,servlet和jsp等

 

 

总结:

严格的来说,Apache/Nginx 应该叫做「HTTP Server」;而 Tomcat 则是一个「Application Server」,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)。

      一个 HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。客户端通过 HTTP Server 访问服务器上存储的资源(HTML 文件、图片文件等等)。通过 CGI 技术,也可以将处理过的内容通过 HTTP Server 分发,但是一个 HTTP Server 始终只是把服务器上的文件如实的通过 HTTP 协议传输给客户端。

       而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。

       也就是上面说的:Apache与Tomcat常常是整合使用: 如果客户端请求的是静态页面,则只需要Apache服务器响应请求。 如果客户端请求动态页面,则是Tomcat服务器响应请求。

       或者是Nginx和tomcat来结合使用,组成tomcat集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值