Apache、Nginx、Tomcat的区别
- Nginx
- Tomcat
- Apache,Nginx与Tomcat的区别
Nginx
-----是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。**
Tomcat
-----servlet(jsp)应用服务器
- Tomcat是运行在JVM中的一个进程。它定义为“中间件”,顾名思义是一个在Java项目与JVM之间的中间容器。
- Web项目的本质,是一大堆的资源文件和方法。Web项目没有入口方法(即main方法),这意味着Web项目中的方法不会自动运行起来。
Web项目部署进Tomcat的webapp中的目的是很明确的,那就是希望Tomcat去调用写好的方法去为客户端返回需要的资源和数据。 - 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处理,再由他交给对应的应用服务器。