Difference between the Apache HTTP Server and Apache Tomcat?
ApacheHTTP服务器和ApacheTomcat在功能上有什么区别?
我知道Tomcat是用Java编写的,HTTP服务器在C中,但除此之外,我真的不知道它们是如何区分的。它们有不同的功能吗?
- 我在我的博客中添加了一个总结,也许它可以帮助一些人:tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html
- 我想知道手术室到底在问什么,我不明白为什么会关门。幸运的是,有答案。
- ApacheWeb服务器和ApacheTomcat是两种不同的工具,它们针对不同的目的进行了调优。如果我们不能通过事实和专业知识来区分它们的用例,那么我们就进入了一种遗憾的状态。结束"争论性"问题的动力已经达到了极限。或许调解人需要更多的信息,少一些固执己见。正如@florianf所说,至少现在有了答案。
- 考虑到上票的数量——这不应该被关闭——而是应该被锁定——因为这实际上是一个很好的问题,有有用的答案。
Apache Tomcat用于部署Java Servlet和JSP。因此,在Java项目中,您可以构建您的战争(Web存档文件),然后将其放到Tomcat的部署目录中。
所以基本上,Apache是一个HTTP服务器,服务于HTTP。Tomcat是一个服务于Java技术的servlet和JSP服务器。
Tomcat是一个servlet容器。最后一个servlet是Java类。JSP文件(类似于PHP和旧的ASP文件)被生成到Java代码(HTTPSServices)中,然后由服务器编译到.class文件并由Java虚拟机执行。
- 我知道Perl脚本可以在Tomcat中运行。这不是真的吗?
- "Apache正在[…]服务HTTP"是什么意思?Tomcat不是也在提供(超文本,又名)HTTP吗?为什么Tomcat不能简单地成为"mod_java"Apache模块?你能解释一下吗?
- Tomcat是一个servlet容器。最后一个servlet是Java类。JSP文件(类似于PHP ODER ASP文件)被生成到Java代码(HTTPSServices)中,然后由服务器编译到.class文件并由Java虚拟机执行。-除此之外,这里的这个论坛很好地解释了ApacheHTTPD和Tomcat之间的区别:coderanch.com/t/85182/tomcat/…
- @Peterino"为什么Tomcat不能简单地成为一个"mod ou java"Apache模块?".有一个"mod_jk"Apache模块,用于连接Apache和Tomcat。问题是,"为什么Tomcat不应该带来一个完整、简单和普通的旧HTTP服务器,而不是强迫管理员配置两个环境,其中一个必须为特定的目标平台重新编译?"
- Tomcat确实带来了一个功能强大的Web服务器。Tomcat是一个servlet/jsp容器,还提供了一个Web服务器。Tomcat的Web服务器非常好,能够处理大多数中小型网站的需求。在支持Java NIO和64位内存的情况下,Tomcat的Calalina模块也可以很好地提供一些更大范围的Web站点。出于各种原因,一些人选择忽略Catalina,而使用ApachehttpdWeb服务器产品背后的Tomcat servlet功能。
- 更正我的意见:Coyote是Tomcat中负责网络服务的模块。Catalina是执行servlet的模块。Jasper是处理JSP的模块。
- @所以Tomcat有自己的web服务器,不使用apache httpd?
- @是的。Tomcat = ( Web Server + Servlet container + JSP environment )。在运行Tomcat的startup.sh脚本时,默认情况下,Web服务器处于打开状态,在端口8080上侦听传入连接(HTTP调用)。Tomcat是纯Java,具有自己的Web服务器实现(COYOOT)。相比之下,Apache HTTP服务器(AHS)使用本地C/C++代码实现了完全独立的Web服务器的实现。AHS是非常灵活和强大的,但往往是致命的。Tomcat自己的Web服务器工作得很好。只有在真正需要时才使用AHS。
- @巴兹堡谢谢你的消息。
- @关于您的问题:What do you intend by"Apache is [...] serving HTTP"?它是一个接收和解释HTTP请求的服务器,用于获取文件系统上的静态HTML文件并将文件内容作为响应发送。在Apache Tomcat中,相同的HTTP请求要么触发静态HTML文件的获取,要么通过容器触发servlet Java程序。
- @巴兹堡,错了。tomcat = webserver。和webserver = servlet container + JSP environment + etc。servlet容器是Web服务器的一部分。
- @起搏器没有,恐怕是你的说法不对。servlet容器当然不一定是Web服务器的一部分。Tomcat经常被用作通过网桥连接到ApacheHTTP服务器的servlet容器。Web浏览器只看到ApacheHTTP服务器。如果一个请求涉及一个servlet,Apache会将该请求转发给Tomcat。这种情况下的Web服务器和servlet容器是完全分开的,两个不同的应用程序运行在两个不同的进程中,一个是本地的,另一个是基于Java的。
- @巴兹堡,阿帕奇根本就没有。我是指你的评论。在这个设置中,Tomcat是Web服务器。tomcat = webserver。Tomcat Web服务器包含servlet容器并提供JSP环境。tomcat webserver = servlet container + JSP environment + etc。
- 这个答案可能是完全正确的,但在区分Tomcat和HTTPD方面对我来说意义不大。
- 那么Apache只是nginx的替代品?它不直接与Java(没有MODYJK)交谈,而只讨论HTTP、HTTPS、FastCGI等等。所以大致上,Tomcat和Apache+mod_jk的工作原理(功能上)是一样的?
- @更准确地说,nginx是ApacheHTTPD的替代品。Tomcat是一个成熟的应用服务器,如Mongrel、Unicorn或Zope。Java和非Java世界之间没有精确的映射,因为整个JavaRun-in -VM体系结构都是完整的。(对于.NET,IIS使用一个名为isapi的类似mod jk的层来执行.NET CLR)。
- 在这个答案中使用"apache"非常令人困惑,它们都是"apache",很难区分您所指的是-http服务器还是tomcat。
除了上面的好答案,我认为应该说Tomcat内置了自己的HTTP服务器,并且完全可以为静态内容提供服务。根据您的Java虚拟机配置,它实际上可以超越Apache中的传统连接器,如MMOTPro代理和MODYJK。
也就是说,一个完全优化的Tomcat服务器应该为静态文件提供快速服务,如果您拥有Java Servlet、JSP和CaldFIX文件,除了静态内容,您可能会发现Tomcat自己做了一个很好的工作。
- 真的。除了他们的Tomcat之外,许多人还使用额外的Apache设置。在大多数情况下这是不必要的。
- 很少有其他服务器支持的ApacheHTTP最强大的部分是能够在应用程序看到请求之前重新路由和重写请求,即通过mod_rewrite引擎和条件环境注入。mod_proxy提供了基本的负载平衡(与mod_k结合提供了负载平衡Tomcat实例之间基本的粘性会话/共享状态)。
Apache是一个通用的HTTP服务器,它支持许多Tomcat不支持的高级选项。
虽然Tomcat可以用作通用HTTP服务器,但您也可以设置Apache和Tomcat与Apache一起工作,为静态内容提供服务,并将动态内容请求转发给Tomcat。
- 不是所有的网络都是静态的吗?我的理解是,Tomcat生成"A"静态内容(动态),然后Apache将提供此服务。所以Tomcat永远不会真正提供动态内容或任何东西,它只会在需要时生成它。
- @科雷图盖,你把你的条件搞混了。"在需要时生成它"正是"动态"的意思,与"静态"正好相反。ApacheHTTP服务器的主要目的是提供静态内容,而servlet技术的主要目的是动态生成内容(动态内容)。
- @巴兹尔布尔克我对汤猫在这里实际提供的内容感到困惑。它将只生成内容,与ApacheHTTP服务器一起使用时将不提供服务。也许你是对的,我只是感到困惑,但对我来说,我还是会说,当Apache一起使用时,Tomcat会在需要时生成静态内容。如果不使用Apache,Tomcat中的Coyote将执行服务,而Catalina和Jesper将生成动态内容。
- @是的,你最后的评论是正确的。如果使用ApacheHTTP服务器+Tomcat,那么Web浏览器只能"看到"AWS,而不知道Tomcat在幕后工作。AWS是Web浏览器客户端和Tomcat之间的中间人。如果只使用Tomcat,那么Tomcat中的Coyote模块将取代AWS来处理来自Web浏览器客户机的现场请求。我推荐后者(仅限Tomcat),除非您知道您有非常特殊的需求,这些需求将由AWS更好地解决。
Tomcat主要是一个应用服务器,它为服务器上的定制Java Servlet或JSP文件提供请求。它通常与ApacheHTTP服务器结合使用(至少在我的经验中)。使用它手动处理传入请求。
HTTP服务器本身最适合提供静态内容…HTML文件、图像等。
- 我怀疑Tomcat is primarily an application server的说法。
- Tomcat主要是用来作为应用服务器的。尽管它也提供了静态内容。
- 是的,Tomcat实际上主要是一个应用服务器,如果这个术语的含义是生成交付给Web浏览器的动态内容的servlet容器。作为第一个servlet容器之一,这就是Tomcat存在的原因。
- Tomcat不是应用服务器,而是Web服务器。javajee.com/web-server-web-container-and-application-server
- @PrateekMishra基于您提供的链接,您关于Tomcat是Web服务器的声明是不正确的;它(主要)是Web容器,也称为servlet容器。
Apache服务器是一个HTTP服务器,它可以服务任何简单的HTTP请求,其中Tomcat服务器实际上是一个servlet容器,它可以服务Java Servlet请求。
Web服务器[Apache]处理Web客户端(Web浏览器)请求并将其转发给servlet容器[Tomcat],容器处理请求并将Web服务器转发的响应发送给Web客户端[Browser]。
此外,您还可以查看此链接了解更多说明:
https://sites.google.com/site/sureshdevang/servlet-architecture
还要检查此答案以进行进一步研究:
https://softwarengineering.stackexchange.com/a/221092
如果您使用Java技术(servlet /JSP)来制作Web应用程序,您可能会使用Apache Tomcat。但是,如果您使用其他技术,如Perl、PHP或Ruby,则使用ApacheHTTP服务器更好(更容易)。
- 这个答案对我来说毫无意义。第一句话是错误的,除了Tomcat,还有许多其他的servlet/jsp容器,其中一些非常流行,如jetty、jboss/wildfly、glassfish、websphere等等。虽然很受欢迎,但Tomcat并不占主导地位,只占有少数市场份额。至于第二句话,Tomcat经常被用作ApacheHTTP服务器后面的servlet容器。和php等常用于其他几个Web服务器,如nginx、lighttpd等。
好吧,Apache是HTTP Web服务器,其中tomcat也是servlet和jsp的Web服务器。而且,在实时方面,Apache比Apache Tomcat更受欢迎。
- 这个问题很老了,你的答案似乎和很久以前发布的答案一样。欢迎回答,但新的回答有助于增加谈话内容。
Apache是一个HTTP Web服务器,用作HTTP。
Apache Tomcat是一个Java servlet容器。它具有与Web服务器相同的功能,但被定制为执行Java servlet和JSP页面。
- 这个答案有点令人困惑
- 是的,答案有点令人困惑,正如@basil bourque在上面所说,"Coyote是Tomcat中负责web服务的模块,Catalina是做servlet的模块。蟑螂合唱团是处理JSP的模块,"现在它清楚地说明了Tomcat的功能与Web服务器的定制,以执行Java Servlet和JSP页面!"!!!"