Apache、Tomcat、Nginx服务器的区别

Apache

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

tomcat

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

Nginx

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。

  

  严格来说,Apache、Nginx应该叫做【HTTP Server】;而tomcat则是一个【Application Server】,或者更准确来说,是一个【Servlet/JSP】应用的容器(ruby、Python等其他语言开发的应用也无法直接运行在tomcat上)。

  一个http server关心的是http协议层面的传输和访问控制,所以在Apache、Nginx上可以看到代理、负载均衡等功能。客户端通过http server访问服务器上存储的资源(HTML文件、图片文件等等)。通过CGI技术,也可以将处理过的内容通过http server分发,但是一个http server始终只是把服务器上的文件如实的通过http协议传输给客户端。

  而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的runtime(对于tomcat来说,就是Java),保证应用能够在应用服务器上正常运行。其次,application server需要支持应用相关的规范,例如类库、安全方面的特性。对于tomcat来说,就是需要提供JSP、Servlet运行需要的标准类库、interface等。为了方便,tomcat(应用服务器)往往也会集成http server的功能,但不如专业的http server那么强大,所以application server 往往运行在http server的背后,执行应用,将动态内容转化为静态内容之后,通过http server分发到客户端。

总结

Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;

Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。

Tomcat:动态解析容器,处理动态请求,是编译JSPServlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。

Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache较适合。


作者:知乎用户
链接:https://www.zhihu.com/question/32212996/answer/55169095
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:潜龙勿用
链接:https://www.zhihu.com/question/32212996/answer/226688632
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/x991788x/p/13555892.html