Apache HTTP Server和Apache Tomcat之间的功能有何不同?
我知道Tomcat是用Java编写的,而HTTP Server是用C编写的,但除此之外我并不知道它们是如何区分的.他们有不同的功能吗?
1> Bernie Perez..:
Apache Tomcat用于部署Java Servlet和JSP.因此,在Java项目中,您可以构建WAR(Web ARchive的简称)文件,并将其放在Tomcat的deploy目录中.
所以基本上Apache是HTTP服务器,提供HTTP服务.Tomcat是一个服务于Java技术的Servlet和JSP服务器.
Tomcat是一个servlet容器.最后,一个servlet是一个Java类.JSP文件(类似于PHP和较旧的ASP文件)生成为Java代码(HttpServlet),然后由服务器将其编译为.class文件并由Java虚拟机执行.
你打算用什么"Apache正在为HTTP提供服务"?Tomcat是否也服务(超文本又称)HTTP?为什么Tomcat不能简单地成为"mod_java"Apache模块?你可以解释吗?
Tomcat是一个servlet容器.最后,一个servlet是一个Java类.JSP文件(类似于PHP或ASP文件)生成为Java代码(HttpServlet),然后由服务器将其编译为.class文件并由Java虚拟机执行. - 除此之外,这个论坛在这里很好地解释了Apache HTTPD和Tomcat之间的区别:http://www.coderanch.com/t/85182/Tomcat/difference-between-Apache-HTTP-server
更正我的评论:Coyote是Tomcat中负责Web服务的模块.Catalina是Servlets的模块.Jasper是处理JSP的模块.
Tomcat确实带来了一个功能强大的Web服务器.Tomcat是一个Servlet/JSP容器*,*还提供了一个Web服务器.Tomcat的Web服务器相当不错,能够处理大多数中小型网站的需求.由于支持Java NIO和64位内存,Tomcat的Catalina模块可以很好地提供一些大型网站.由于各种原因,有些人选择忽略Catalina,而是使用Apache`httpd`网络服务器产品背后的Tomcat Servlet功能.
@KorayTugay是的.`Tomcat =(Web Server + Servlet容器+ JSP环境)`.当您运行Tomcat的`startup.sh`脚本时,Web服务器默认为ON,在端口8080上侦听传入连接(HTTP调用).Tomcat是纯Java,具有自己的Web服务器实现(Coyote).相比之下,[Apache HTTP Server](https://en.wikipedia.org/wiki/Apache_HTTP_Server)(AHS)使用本机C/C++代码具有完全独立的Web服务器实现.AHS非常灵活和强大,但通常是矫枉过正.Tomcat自己的Web服务器运行良好.仅在真正需要时才使用AHS.
@Peterino"为什么Tomcat不能简单地成为"mod_java"Apache模块?" 有一个"mod_jk"Apache模块用于将Apache与Tomcat连接.问题是"为什么Tomcat不应该带来一个完整,简单和简单的旧HTTP服务器,而不是强迫管理员配置两个环境,其中一个必须针对特定目标平台重新编译?"
@Pacerier不,我担心你的陈述不正确.Servlet容器当然不是*必须是Web服务器的一部分.Tomcat经常被用作仅通过桥接到[Apache HTTP Server](http://en.m.wikipedia.org/wiki/Apache_HTTP_Server)的Servlet容器.Web浏览器只能看到Apache HTTP Server.如果请求涉及Servlet,Apache会将请求中继到Tomcat.在这种情况下,Web服务器和Servlet容器是完全独立的,两个不同的应用程序在两个不同的进程中运行,一个是本机的,另一个是基于Java的.
@BasilBourque所以Tomcat有自己的网络服务器,它不使用Apache httpd?
@Peterino提出了你的问题:`你打算用什么"Apache服务HTTP"?它是一个接收和解释http请求以获取文件系统上的静态html文件并将文件内容作为响应发送的服务器.其中作为apache tomcat,相同的http请求要么触发获取静态html文件,要么通过容器触发servlet java程序.
2> ethyreal..:
除了上面的精细答案之外,我认为应该说Tomcat内置了自己的HTTP服务器,并且在提供静态内容方面也非常有用.根据您的Java虚拟机配置,它实际上可以超越传统的apache连接器,如mod_proxy和mod_jk.
这就是说完全优化的Tomcat服务器应该快速提供静态文件,如果你有静态内容的Java servlet,JSP和ColdFusion文件,你可能会发现tomcat本身就是一个很好的工作.
其他服务器支持的apache http中最强大的部分是能够在应用程序必须看到它之前重新路由和重写请求,即通过`mod_rewrite`引擎和条件环境注入.`mod_proxy`提供基本的负载平衡(并结合mod_jk在负载平衡的tomcat实例之间提供基本的粘性会话/共享状态).
真正.除了他们的Tomcat之外,许多人仍然使用额外的Apache设置..在大多数情况下这是不必要的.
3> 小智..:
Apache是一个通用的http服务器,它支持Tomcat没有的许多高级选项.
虽然Tomcat可以用作通用的http服务器,但您也可以将Apache和Tomcat设置为与Apache一起提供静态内容,并将动态内容请求转发给Tomcat.
@KorayTugay您的条款令人困惑."在需要时生成它"正是"动态"的含义,与"静态"完全相反.Apache HTTP Server的主要目的是提供静态内容,而Servlet技术的主要目的是即时生成内容(动态内容).
@KorayTugay是的,你的最后评论是正确的.如果使用Apache HTTP Server + Tomcat,那么Web浏览器只能"看到"AWS,而不知道Tomcat正在幕后工作.AWS是Web浏览器客户端和Tomcat之间的中间人.如果单独使用Tomcat,那么Tomcat中的Coyote模块将取代AWS来对来自Web浏览器客户端的请求进行转换.我建议使用后者(仅Tomcat),除非您知道您有非常特殊的需求,这些需求可以通过AWS更好地解决.
4> levand..:
Tomcat主要是一个应用程序服务器,它服务于服务器上定制的Java servlet或JSP文件的请求.它通常与Apache HTTP服务器一起使用(至少根据我的经验).用它来手动处理传入的请求.
HTTP服务器本身最适合提供静态内容... html文件,图像等.
我怀疑`Tomcat主要是一个应用程序服务器`声明.
tomcat主要是*意味着*是一个应用服务器.虽然它*也是*服务器静态内容.
是的Tomcat确实主要是一个应用程序服务器,如果该术语是指Servlet容器生成传递给Web浏览器的动态内容.作为第一个Servlet容器之一,这就是Tomcat的存在理由.
5> streak..:
apache服务器是一个http服务器,它可以提供任何简单的http请求,其中tomcat服务器实际上是一个可以为java servlet请求提供服务的servlet容器.
Web服务器[apache]处理Web客户端(Web浏览器)请求并将其转发到servlet容器[tomcat]并且容器处理请求并发送由Web服务器转发到Web客户端[浏览器]的响应.
您也可以查看此链接以获得更多说明: -
https://sites.google.com/site/sureshdevang/servlet-architecture
同时查看此答案以进行进一步研究: -
https://softwareengineering.stackexchange.com/a/221092
6> 小智..:
如果您使用Java技术(Servlet/JSP)来制作Web应用程序,您可能会使用Apache Tomcat.但是,如果您使用其他技术(如Perl,PHP或ruby),则更好(更容易)使用Apache HTTP Server.
这个答案对我来说毫无意义.第一句话是错误的,除了Tomcat之外还有许多其他的Servlet/JSP容器,一些非常流行,如Jetty,JBoss/Wildfly,Glassfish,WebSphere等等.虽然很受欢迎,但Tomcat并不占主导地位,只有少数市场份额.至于第二句,Tomcat通常用作Apache HTTP Server后面的Servlet容器.PHP等[经常与其他几个Web服务器一起使用](http://en.m.wikipedia.org/wiki/PHP#Use),如Nginx,Lighttpd等.