首页 > 系统相关 >Tomcat 与 Nginx,Apache的区别

Tomcat 与 Nginx,Apache的区别

时间:2023-04-03 19:57:52浏览次数:49  
标签:HTTP Tomcat Server Nginx Apache 服务器

    Apache指的应该是Apache软件基金会下的一个项目—— Apache HTTP Server Project

    Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用的TCP代理服务器)。

    Tomcat是Apache基金会下的另外一个项目,与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源。


    在严格意义上来说,Apache/Nginx 应该叫做[HTTP Server];而 Tomcat 则是一个[Application Server],或者更准确的来说,是一个[Servlet/JSP]应用的容器(Go/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 分发到客户端。


Nginx

    Nginx是由一位来自俄罗斯的程序员Igor Sysoe所编写的十分轻量级的HTTP服务器。nginx,它的发音为“engine X”。是一个高性能基于HTTP和反向代理的服务器,当只有静态资源的时候,就可以使用nginx来做服务器,现在很流行的动静分离(普遍情况下,是需要动态资源和静态资源分开,将静态资源部署在nginx上,当如果是静态资源的请求来时,就直接到nginx配置的静态资源目录下面获取资源;如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离)就能通过nginx来实现。

    · 具备高性能反向代理服务并属于轻量级的web服务器

反向代理

    简单说就是利用代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时的代理服务器对外表现就属于一个反向代理服务器

    · 良好的扩展性,可以通过模块方式来进行功能扩展

    · 较为灵活的负载均衡策略

    轮询(默认)算法:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则自动剔除故障机器,使用户访问不受到影响,个人觉得这个是最好的方法,但也有成本就是消耗机器的成本!实际情况中也验证了这一点,移动段的token!

    · 抗并发的能力很强


Apache

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


Tomcat

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

    如果请求是静态网页则由Apache处理,并将结果返回;如果是动态请求,Apache会将解析工作转发给Tomcat处理,Tomcat处理后将结果通过Apache返回。这样可以达到分工合作,实现负载均衡,提高系统的性能。

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

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


Apache和Nginx的部分功能相比较

    异步能力:apache中也有异步模块支持异步功能,不过是阻塞性异步,而nginx是非阻塞性异步。

    抗并发:nginx因为软件体积小,消耗主机资源少,抗并发能力是apache的3倍以上。

    重量等级:apache配置相对nginx复杂,自身不支持动态页面。

    漏洞缺陷:apache相对nginx的bug会少很多。



Nginx 以轻量的优点在慢慢取带重量级的Apache ,现在已经是主流。


   

归类: 自动化运维及服务

标签:HTTP,Tomcat,Server,Nginx,Apache,服务器
From: https://www.cnblogs.com/lz1996/p/17284155.html

相关文章

  • docker运行nginx
    运行nginx镜像我们打开网易蜂巢镜像中心https://c.163yun.com/hub#/m/home/搜索nginx,可以看到有两个nginx,他们的名字和头上和图标都不一样,一个是鲸鱼,一个是两个球.带有鲸鱼的镜像表示这个镜像是从官网的镜像中心复制过来的.这个镜像与docker的镜像是一摸一样的.我们使......
  • Apache JMeter压力测试工具的安装与使用
    官网下载https://jmeter.apache.org/download_jmeter.cgi然后解压即可运行双击bin/jmeter.bat汉化在软件里选择语言重启就会还原,所以这里直接改配置文件来永久汉化打开bin/jmeter.properties找到#language行,大概在第39行,改成language=zh_CN保存后重启jmeter即可使用教......
  • myBatis报错org.apache.ibatis.ognl.NoSuchPropertyException
    跑批任务时mybatis报错org.apache.ibatis.ognl.NoSuchPropertyException,重跑未出现报错,百度发现是由于mybatis依赖的Ognl版本OgnlRuntime.getMethodValue在并发情况下会存在并发问题,错误地返回null引起报错 以下是搜索该问题时找到的资料:https://github.com/1993hzh/tho......
  • 又一国产开源项目走向世界,百度RPC框架Apache bRPC正式成为ASF顶级项目
    2023年1月26日,Apache软件基金会(ASF)官方正式宣布ApachebRPC正式毕业,成为Apache的顶级项目。我听到这个消息是挺开心的,毕竟是又一款由国人主导的apche顶级项目,再次证明国内在开源界正在发挥越来越重要的作用。ApachebRPC的历史ApachebRPC的前身是百度内部的一个RPC框......
  • 【环境搭建】docker+nginx部署PHP
    目的使用docker容器完成nginx的安装以及部署PHP网页步骤一、安装nginx1.拉取Nginx镜像dockerpullnginx//拉取镜像dockerimages//查看本地镜像这里注意需要记一下nginx的IMAGEID,我这里的ID是605c2.创建Nginx容器dockerrun......
  • nginx 热加载stream模块
    报错:nginx:[emerg]unknowndirective"stream"in/usr/local/nginx/conf.d/ssh.conf判断模块是否存在 进入二进制部署包解压后目录 添加模块,与之前加载的模块一致,并新添加 --with-stream模块./configure--prefix=/usr/local/nginx--user=nginx--group=nginx......
  • nginx上传文件超出默认大小限制-附件,提示:413 Request Entity Too Large
    Nginx限制文件上传大小,相应配置参数:client_max_body_size注意:该参数在nginx.conf中默认是没有配置的,不配置的情况下,nginx默认限制请求附件大小为:1M。即:默认当你通过nginx代理上传附件,大于1M的文件时,浏览器会抛出如下异常。处理方式:找到nginx的配置文件nginx/conf/nginx.conf,......
  • 嵌入式 Tomcat 使用
    目录参考资料1简介2下载嵌入式Tomcat3代码示例3.1实现Servelt和Websocket3.1.1建立maven工程并引入jar包3.1.2类说明3.1.3WelcomeServlet3.1.4AnnotationEchoIMServer3.1.5EchoIMServerFilter3.1.6创建程序启动入口TomcatWebContanerBootstrap3.1.7验证参考资......
  • nginx负载均衡和反向代理的区别
    nginx负载均衡和反向代理的区别有:1、实现负载均衡一定要需要反向代理;2、反向代理主要是缓存东西,而负载均衡则是减少高并发情况;3、负载均衡是做反向代理的目的之一。下面是详细介绍:负载均衡需要通过反向代理来实现。反向代理就是指nginx作为前端服务器,将请求转发到后端,再将后端......
  • nginx 下监听同一端口通过路径转发不同服务
    注意v1d2最优先匹配server{listen80;server_namelocalhost; location/v1d2{proxy_passhttp://127.0.0.1:8088;} location/{ root/data/dist; try_files$uri$uri/@router; indexindex.htm......