Web Server 的概念太宽泛了。
严格的来说,Apache/Nginx 应该叫做「HTTP Server」;而 Tomcat 则是一个「Application Server」,或者更准确的来说,是一个「Servlet/JSP」应用的容器(Ruby/Python 等其他语言开发的应用也无法直接运行在 Tomcat 上)。
意思就是说Servlet/jsp程序可以直接在tomcat上运行,
而python/Ruby应用不能
?
所以我们写好Servlet/JSP程序,放到tomcat上就可以了,就成了一个动态网站了?
apache和nginx可以归为一类,属于静态页面服务器。tomcat属于Java Servlet容器,用来生成动态页面的。
apache属于比较老的静态页面服务器,比较多现有插件,包括代理、SSL支持、动态编程语言处理等。
nginx和apache差不多,都有插件支持动态编程语言处理等、但nginx的IO模型比apache更适合跑代理。所以一般都作为前端缓冲代理。
tomcat就是Java Servlet容器,主要用来跑Java的Web功能,当然也提供一个简单静态页面转换