nginx
在负载均衡里是前端服务器,用来处理请求的转发(反向代理等);是静态页面服务器.绝大部分时候他们本身并不会运行项目。Tomcat是后端服务器,属于
Java Servlet
容器.用来生成动态页面.是直接用来运行项目的容器。简单来说就是你发出一个请求,先经过nginx
,它们会合理地把请求分配到后台比较不忙的Tomcat
。Tomcat
会把请求处理好返回给Nginx
,然后Nginx
会把最终的结果传送给浏览器.当然,如果是一些静态的数据,Nginx
就可以直接处理了。Tomcat/Jetty
等等这一类叫Web Container
,也就是Web容器,所谓容器,是和他负责的东西管理整个的生命周期的。所以Web Container
会管理整个Servlet
的生命周期。类似的Spring
的Ioc
容器则会管理整个Bean
的生命周期。而GlassFish/Weblogic
这一类的application Server
,则会管理更多,包含命名服务器,EJB
等资源。Nginx/apache
可以说是web server
,也就是他们可以处理静态资源,比如html
、图片等,但如果把Servlet
交给它则处理不了。所以,一般把Nginx
放在前端处理静态资源,如果有对应的Servlet
请求,则通过AJP
转给后面的Tomcat、Jetty
进行处理。tomcat
用在java
后台程序上,java
后台程序难道不能用apache
和nginx
吗?”不能。apache
和nginx
不是servlet
容器。什么是servlet
容器呢?即实现HttpServletRequest
、HttpServletResponse
、HttpSession
等等接口,解析http
请求,通过类加载器加载对应的servlet
实现类并调用。也就是说servlet
容器必须由java
或者基于jvm
的语言实现。
Tomcat和Nginx的区别
-------------本文结束感谢您的阅读-------------
本文标题:Tomcat和Nginx的区别
文章作者:老米的世界
发布时间:2017年08月02日 - 00:00
最后更新:2019年09月05日 - 22:06
原始链接:http://mpfly.github.io/2017/08/02/Tomcat和Nginx的区别/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。
欢迎关注我的微信公众号!
坚持原创技术分享,您的支持将鼓励我继续创作!