web服務器:只處理html靜態頁面不處理動態頁面,如apache/nginx/iis等。php
應用服務器:能處理html靜態頁面也能處理動態頁面,如tomcat/weblogic/websphere/jboss等。html
http服務器:等同web服務器。nginx
中間件:通常指應用服務器。但從中間件的定義--處於應用和應用、應用和系統之間的軟件--來講,web服務器也能夠算中間件,另外還有消息中間件等其餘一些也是中間件。web
說明:apache
1)就自己而言web服務器確實是不支持解析動態語言的:apache是不能解析php的iis也不能解析.net,前者是經過引入php模塊後者是引入解析引擎才能解析的。tomcat
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模式。jsp
6)中間件能夠分爲3大類:應用服務類中間件(等同應用服務器)、應用集成類中間件(消息中間件屬於這類)、業務架構類中間件。