1. nginx在负载均衡里是前端服务器,用来处理请求的转发(反向代理等);是静态页面服务器.绝大部分时候他们本身并不会运行项目.

  2. Tomcat是后端服务器,属于Java Servlet容器.用来生成动态页面.是直接用来运行项目的容器。简单来说就是你发出一个请求,先经过nginx,它们会合理地把请求分配到后台比较不忙的Tomcat.Tomcat会把请求处理好返回给Nginx,然后Nginx会把最终的结果传送给浏览器.当然,如果是一些静态的数据,Nginx就可以直接处理了.

  3. Tomcat/Jetty 等等这一类叫Web Container,也就是Web容器,所谓容器,是和他负责的东西管理整个的生命周期的。所以Web Container会管理整个Servlet的生命周期。类似的Spring 的Ioc容器则会管理整个Bean的生命周期。而GlassFish/Weblogic这一类的 application Server,则会管理更多,包含命名服务器,EJB等资源。

  4. Nginx/apache 可以说是web server. 也就是他们可以处理静态资源,比如html,图片等,但如果把Servlet交给它则处理不了。所以,一般把Nginx放在前端处理静态资源,如果有对应的Servlet请求,则通过AJP转给后面的Tomcat、Jetty进行处理。
  5. “tomcat用在java后台程序上,java后台程序难道不能用apache和nginx吗?”不能。apache和nginx不是servlet容器。什么是servlet容器呢?即实现HttpServletRequest、HttpServletResponse、HttpSession等等接口,解析http请求,通过类加载器加载对应的servlet实现类并调用。也就是说servlet容器必须由java或者基于jvm的语言实现。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐