我們通過瀏覽器打開的網頁都需要存儲在web服務器上,是一臺具有獨立IP地址的計算機,它的主要功能是提供網上信息的瀏覽服務,可以向Internet上的客戶機提供www、email和ftp等各種Internet服務。今天我們具體講下什么是web服務器?與web應用服務器有哪些區別?
一、什么是web服務器?
Web服務器一般指網站服務器,是指Internet上某種類型的計算機程序,可以向瀏覽器等Web客戶端提供文檔,也可以放置網站文件,讓全世界瀏覽,也可以放置數據文件,讓全世界下載。
Web服務器和HTTP服務器可以說是同一個東西,如果要細分的話,HTTP服務器是建立在HTTP協議之上的提供文檔瀏覽的服務器,更多的是提供靜態的文件。而Web服務器涵蓋了HTTP服務器,Web服務器不僅能夠存儲信息,還能運行腳本和程序。
二、web服務器有哪些?
目前比較主流的三個Web服務器是Apache、Nginx、IIS。在選擇使用web服務器應考慮的本身特性因素有:性能、安全性、日志和統計、虛擬主機、代理服務器、緩沖服務和集成應用程序等,下面介紹幾種我們常用的WEB服務器。
1、Apache
Apache是世界使用排名第一的Web服務器軟件。它幾乎可以運行在所有的計算機平臺上。由于Apache是開源免費的,因此有很多人參與到新功能的開發設計,不斷對其進行完善。Apache的特點是簡單、速度快、性能穩定,并可做代理服務器來使用。Apache剛開始被推出的時候有很多缺陷,如今已經被修復的越來越完善,如果你是web服務器的鉆研者,建議一定要學習一下Apache的使用。
2、Nginx
Nginx不僅是一個小巧且高效的HTTP服務器,也可以做一個高效的負載均衡反向代理,是Linux平臺下的優秀Web服務器,通過它接受用戶的請求并分發到多個Mongrel進程可以極大提高Rails應用的并發能力,它讓本來運行很慢的應用程序提升了很大的速度。
3、IIS
IIS(Internet信息服務)英文InternetInformationServer的縮寫,它是微軟公司主推針對Windows平臺的服務器。IIS的特點具有:安全性,強大,靈活。它和NET語言非常的搭配,新手掌握起來也比較快。
4、Tomcat
Tomcat是很多Java學習者都非常熟悉的web服務器,是Apache軟件基金會(ApacheSoftwareFoundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發而成。Tomcat技術先進、性能穩定、有可視化的操作界面,也有命令語句,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web應用服務器。
三、Web服務器的工作原理
Web服務器的工作原理并不復雜,一般可分成如下4個步驟:連接過程、請求過程、應答過程以及關閉連接。
1、連接過程:Web服務器和其瀏覽器之間所建立起來的一種連接。查看連接過程是否實現,用戶可以找到和打開socket這個虛擬文件,這個文件的建立意味著連接過程這一步驟已經成功建立。
2、請求過程:Web的瀏覽器運用socket這個文件向其服務器而提出各種請求。
3、應答過程:運用HTTP協議把在請求過程中所提出來的請求傳輸到Web的服務器,進而實施任務處理,然后運用HTTP協議把任務處理的結果傳輸到Web的瀏覽器,同時在Web的瀏覽器上面展示上述所請求之界面。
4、關閉連接:當上一個步驟--應答過程完成以后,Web服務器和其瀏覽器之間斷開連接之過程。
Web服務器上述4個步驟環環相扣、緊密相聯,邏輯性比較強,可以支持多個進程、多個線程以及多進程、線程相混合的技術,詳細請看上圖。
四、Web服務器與Web應用服務器的區別
在大多數時候,Web服務器和Web應用服務器這兩個術語是可以互換使用的。但從嚴格意義上講Web服務器只負責處理HTTP協議,只能發送靜態頁面的內容。而JSP,ASP,PHP等動態內容需要通過CGI、FastCGI、ISAPI等接口交給其他程序去處理,這個其他程序就是應用服務器。比如Web服務器包括Nginx,Apache,IIS等。而應用服務器包括WebLogic,JBoss等。應用服務器一般也支持HTTP協議,因此界限沒這么清晰。但是應用服務器的HTTP協議部分僅僅是支持,一般不會做特別優化,所以很少有見Tomcat直接暴露給外面,而是和Nginx、Apache等配合,只讓Tomcat處理JSP和Servlet部分。
大多數Web應用服務器都將Web服務器作為不可分割的一部分,這意味著Web應用服務器可以做任何Web服務器所能做的事情。此外,Web應用服務器有組件和特性來支持應用級服務,如連接池、對象池、事務支持、消息傳遞服務等。
由于web服務器非常適合用于提供靜態內容,而應用服務器適合提供動態內容,因此大多數生產環境都有web服務器充當Web應用服務器的反向代理。這意味著在頁面請求時,web服務器會通過提供靜態內容(例如圖像/靜態HTML)來解釋請求,并且它還會使用某種過濾技術(主要是請求資源的擴展)識別動態內容請求,并透明地轉發到應用服務器。