web服务器/应用服务器/http服务器/中间件
web服务器:只处理html静态页面不处理动态页面,如apache/nginx/iis等。
应用服务器:能处理html静态页面也能处理动态页面,如tomcat/weblogic/websphere/jboss等。
http服务器:等同web服务器。
中间件:一般指应用服务器。但从中间件的定义--处于应用和应用、应用和系统之间的软件--来说,web服务器也可以算中间件,另外还有消息中间件等其他一些也是中间件。
说明:
1)就本身而言web服务器确实是不支持解析动态语言的:apache是不能解析php的iis也不能解析.net,前者是通过引入php模块后者是引入解析引擎才能解析的。
2)现在基本没有全静态页面的网站,web服务器常常要引入模块组成应用服务器使用同时单纯应用服务器也具有web服务器的功能,之所以还一直存在web服务器的概念主要是因为其在负载均衡(有数台机器部署了该网站)和反向代理(如php页面给php-fpm处理jsp页面给tomcat处理)上还是很好用的;另外在处理静态页面上应用服务器也不及web服务器好。
3)web服务器支持动态语言的两种方式:Handler模式和CGI模式。在系统层面上看Handler模式中web服务器和引入模块同属一个进程,而在CGI模式中web服务器和CGI是两个独立的进程。前者的典型代表是apache引入模块支持php,后者的典型代表是nginx通过php-fpm支持php。
4)严格来说还将CGI模式分成CGI模式和FastCGI模式,前者对每个请求都fork一个进程去处理,这样显然是低效的;后者进行改进对所有请求都是一个进程在处理。上边说的php-fpm实际上是FastCGI模式。
5)实际上Apache解析php除了Handler模式,也支持CGI和FastCGI模式。
6)中间件可以分为3大类:应用服务类中间件(等同应用服务器)、应用集成类中间件(消息中间件属于这类)、业务架构类中间件。