Apache、Nginx、Tomcat的区别

Apache、Nginx、Tomcat的区别

  • Nginx
  • Tomcat
  • Apache,Nginx与Tomcat的区别

Nginx

-----是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。**

在这里插入图片描述

Tomcat

-----servlet(jsp)应用服务器

  1. Tomcat是运行在JVM中的一个进程。它定义为“中间件”,顾名思义是一个在Java项目与JVM之间的中间容器。
  2. Web项目的本质,是一大堆的资源文件和方法。Web项目没有入口方法(即main方法),这意味着Web项目中的方法不会自动运行起来。
    Web项目部署进Tomcat的webapp中的目的是很明确的,那就是希望Tomcat去调用写好的方法去为客户端返回需要的资源和数据。
  3. Tomcat可以运行起来,并调用写好的方法。那么,Tomcat一定有一个main方法。对于Tomcat而言,它并不知道用户会有什么样的方法,这些都只是在项目被部署进webapp下后才确定的。
    由此,可知Tomcat用到了Java的反射来实现类的动态加载、实例化、获取方法、调用方法。但是部署到Tomcat的中的Web项目必须是按照规定好的接口来进行编写,以便进行调用。
    在这里插入图片描述
    Connector接受请求,并由engine封装对应路径下的jsp为HttpServletResponse给对应的客户端
    • tomcat是一个web应用容器,可以运行各种web应用
    • tomcat分了多层,每层有各种独立的功能处理,其中Connector就是处理网络连接协议的
    • tomcat底层使用处理TCP连接,然后支持各种协议,比如HTTP,NIO,BIO

Apache,Nginx与Tomcat的区别

Apache/Nginx 应该叫做「HTTP Server」;而 Tomcat 则是一个「Application Server」,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)。
HTTP服务器关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。
应用服务器则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。
下图中,用户请求先交由Nginx处理,再由他交给对应的应用服务器。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

检索

【摘抄】基于线性表的检索一、检索的基本概念和算法分类1、检索概念: 可以形式化地定义基于关键码的检索。假定k1、k2…kn是互不相同的关键码值,有一个包含n条记录的集合C,形式如下: (k1, R1),(k2, R2),…

例说C#深拷贝与浅拷贝

一开始,先对C#深拷贝与浅拷贝知识做个简单的总结。 无论是浅拷贝与深拷贝,C#都将源对象中的所有字段复制到新的对象中。不过,对于值类型字段,引用类型字段以及字符串类型字段的处理,两种拷贝方式存在一定的区别&#x…

企业架构 - 开篇:TOGAF介绍

在《年度总结和计划:去年4个1,今年5个1》中说过今年我准备在项目组引入一个架构方TOGAF。工业和信息化部副部长杨学山在一次内部座谈时提到:与西方发达国家比,国内的信息化建设在硬件方面已经不相上下,在软件方面有5年…

C#(4) implicit explicit

最近几节课学的知识点的量有很大增长,加上上机和托福考试的临近,这里练习的所有代码就不走形式全贴出来了,找我自己觉得又不熟悉的点贴出来,争取简明扼要,恩恩 这次主要看接口的问题: 接口可以多继承&#…

【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果

placeholder 是 html5 新增加的属性,主要提供一种提示(hint),用于描述输入域所期待的值。该提示会在输入字段为空时显示,并会在字段获得焦点时消失。placeholder 属性适用于以下类型的 input 标签:text, se…

连接远程电脑中的虚拟机---端口映射

连接远程电脑中的虚拟机---端口映射问题:A主机中运行有2台虚拟机,现在我们希望在B主机中通过ssh(或其他方式)访问A主机中的2台虚拟机。(前提:B主机可以ping通A主机,即A有公网IP或A、B在同一子网下) 解决方法 设置虚拟…

Unity 动画属性

在动画的使用上使用不当的设置往往会造成不可预料的结果。 首先,如果动画自身可以驱动物体移动,那么在Animator组件上必须选择apply root motion,物体的动画位移才能生效,否则动画只能在原地播放。 第二,Bake Into Pos…

Javascript正则匹配数字,中英文,中横线,下划线,utf-8中文

为什么80%的码农都做不了架构师?>>> function check_string(nickname) {var reg /^[A-Za-z0-9-_\u4e00-\u9fa5]{4,30}$/;if (!reg.test(nickname)) {return false;}return true; } 转载于:https://my.oschina.net/biezhi/blog/396989

基于linux的集群系统LVS

一 LVS (Linux Virtual Server)针对高可伸缩、高可用网络服务的需求,我们给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务…

jQuery 开发环境搭配(转)

jQuery 作为一个轻量级的 JavaScript 库,至 06 年出来到现在, 也算是用得最火的 JavaScript 库了吧, 要开始学习 jQuery ,首先还是必须得把环境搭配好吧, 这一篇博文呢,主要是想介绍一下在 Dreamweaver 上和…

Connection to node 0 (/192.168.204.131:9092) could not be established

解决连接虚拟机内kafka出现Connection to node 0 /192.168.204.131:9092 could not be established.Broker may not be available.问题: 在我尝试使用Springboot集成虚拟机内运行的kafka服务器时,出现了以下问题。 原因:可能出现的原因主要有…

获取本机MSSQL保存凭证

本文转自王子博客:http://www.cnblogs.com/killbit/p/4355950.html 首先要感谢哥们对我的指点,多谢。 当我们遇到类似情况下,如何获取保存在MSSQL工具里的凭证呢? //如果对方连接地址后面加了IP\sqlexpress 连接的时候你也记得加上…

【读书笔记-数据挖掘概念与技术】数据挖掘的发展趋势和研究前沿

复杂的数据类型 数据挖掘的其他方法 关于数据挖掘基础的观点: 可视和听觉数据挖掘 数据可视化数据挖掘结构可视化数据挖掘过程可视化交互式可视数据挖掘数据挖掘的应用

解决torch.cuda.is_available()为False的问题

解决torch.cuda.is_available为False问题:在Anaconda环境下,电脑拥有GPU并且已经通过conda install安装了Pytorch、cudatoolkit,但是torch.cuda.is_available()始终返回False(找不到显卡) 原因:使用conda …

如何解决ORA-04031错误

诊断并解决ORA-04031错误 当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先清除池中当前没使用的所有对象,使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求,就会产生ORA-04031错误。 当这个错误出现的时候你得到的…

Idea新建modules后无法自动导入pom.xml

Idea新建modules后无法自动导入pom.xml打开设置,搜索Maven,打开Importing,将红色箭头部分勾选 打开Ignored Files,将红色箭头部分都取消勾选 点击右侧工具栏的maven选项,点击红色箭头部分的Reimport All Maven Proje…

宝剑锋从磨砺出——使用在线评测平台磨砺C#使用能力

学数学的时候,我们通常会通过大量的练习题来巩固所学知识;其实学习程序设计设计语言也不例外。那么如何通过练习去磨砺自己的C#使用能力呢?一个方法是参与到实际的软件项目开发中,而另一个更加直接的方法则是“做题”。 去哪里找练…

java多线程学习-java.util.concurrent详解(一) Latch/Barrier

2019独角兽企业重金招聘Python工程师标准>>> Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent, 提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。从这篇blog起,我将跟大家一起共同…

Java Websocket实例

2019独角兽企业重金招聘Python工程师标准>>> 介绍 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新…

Go学习笔记—并发高级

Go并发机制 ​ 协程:一个线程可以对应多个协程,协程串行运行在用户空间。协程运行在线程之上,当一个协程执行完成后,可以选择主动让出,让另一个协程运行在当前线程之上。协程并没有增加线程数量,只是在线程…