Web Server中文名稱叫網(wǎng)頁(yè)服務(wù)器或web服務(wù)器。WEB服務(wù)器也稱為WWW(WORLD WIDE WEB)服務(wù)器,主要功能是提供網(wǎng)上信息瀏覽服務(wù)
IIS
IIS是微軟公司的Web服務(wù)器。主要支持ASP語(yǔ)言環(huán)境,對(duì)于中小企業(yè)來說建立自己的網(wǎng)站,對(duì)外展示自己的頁(yè)面是最平常不過的事情了。目前最流行的建立WWW服務(wù)工具就要屬Apache與IIS了。IIS只能在微軟公司的windows操作系統(tǒng)下使用,離開了windows他將一事無成。無法移植到其他類型的操作系統(tǒng)中。
Tomcat
JAVA里面一個(gè)web容器,就是一個(gè)http請(qǐng)求來了,它幫你接受,可能再對(duì)請(qǐng)求做些處理,然后拉起你controller的代碼,把請(qǐng)求傳進(jìn)去,最后當(dāng)controller處理結(jié)束后,再把請(qǐng)求簡(jiǎn)單處理一下返回給請(qǐng)求者。
Tomcat 服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。對(duì)于一個(gè)初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache 服務(wù)器,可利用它響應(yīng)html(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)頁(yè)面的訪問請(qǐng)求。實(shí)際上Tomcat 部分是Apache 服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat 時(shí),它實(shí)際上作為一個(gè)與Apache 獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。
CDN
中文叫內(nèi)容分發(fā)網(wǎng)絡(luò),都是云服務(wù)商在運(yùn)營(yíng),它可以讓你的用戶在訪問資源的時(shí)候就近訪問,提高靜態(tài)資源的訪問速度。
這些都是不同的東西,不過都是概念上的,功能上有一定的重疊,不過在使用中基本都是不同的東西。
一般生產(chǎn)上iis,Nginx,apache都是當(dāng)反向代理用,少數(shù)情況會(huì)當(dāng)靜態(tài)文件服務(wù)器用。tomcat,無論何時(shí)都是web容器。cdn一般只在生產(chǎn)上用,主要是提供靜態(tài)文件服務(wù)。
至于他們的實(shí)現(xiàn),理論上講用什么語(yǔ)言否沒問題,不管是java node還是啥的,不過有現(xiàn)成的,應(yīng)該沒人會(huì)造新的。
Apache
Apache是一個(gè)web服務(wù)器環(huán)境程序 啟用他可以作為web服務(wù)器使用 不過只支持靜態(tài)網(wǎng)頁(yè). 但asp,php,cgi,jsp等動(dòng)態(tài)網(wǎng)頁(yè)的就不行. 如果要在APACHE環(huán)境下運(yùn)行jsp 的話就需要一個(gè)解釋器來執(zhí)行jsp網(wǎng)頁(yè), 而這個(gè)jsp解釋器就是TOMCAT, 為什么還要JDK呢?因?yàn)閖sp需要連接數(shù)據(jù)庫(kù)的話就要jdk來提供連接數(shù)據(jù)庫(kù)的驅(qū)程,所以要運(yùn)行jsp的web服務(wù)器平臺(tái)就需要APACHE+TOMCAT+JDK 整合的好處是:如果客戶端請(qǐng)求的是靜態(tài)頁(yè)面,則只需要Apache服務(wù)器響應(yīng)請(qǐng)求如果客戶端請(qǐng)求動(dòng)態(tài)頁(yè)面,則是Tomcat服務(wù)器響應(yīng)請(qǐng)求因?yàn)閖sp是服務(wù)器端解釋代碼的,這樣整合就可以減少Tomcat的服務(wù)開銷。
apache是web服務(wù)器,tomcat是應(yīng)用(java)服務(wù)器,它只是一個(gè)servlet(jsp也翻譯成servlet)容器,可以認(rèn)為是apache的擴(kuò)展。
Apache:普通服務(wù)器,本身只支持html即普通網(wǎng)頁(yè),它是html容器,功能像IIS一樣
tomcat:解釋java程序(jsp,serverlet),它是是jsp/servlet容器,用于發(fā)布JSP及JAVA的
apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),tomcat就是一個(gè)桶(裝像JAVA這樣的水),而這個(gè)桶也可以不放在卡車上。
訣竅是,當(dāng)配置正確時(shí),Apache 為HTML頁(yè)面服務(wù),而Tomcat 實(shí)際上運(yùn)行JSP 頁(yè)面和Servlet。另外,Tomcat和IIS等Web服務(wù)器一樣,具有處理HTML頁(yè)面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過,Tomcat處理靜態(tài)HTML的能力不如Apache服務(wù)器。目前Tomcat最新版本為9.0。
Nginx
Nginx是俄羅斯人編寫的十分輕量級(jí)的HTTP服務(wù)器,Nginx,它的發(fā)音為“engine X”,是一個(gè)高性能的HTTP和反向代理服務(wù)器,同時(shí)也是一個(gè)IMAP/POP3/SMTP 代理服務(wù)器。
nginx相對(duì)于apache的優(yōu)點(diǎn)
輕量級(jí),同樣起web 服務(wù),比apache占用更少的內(nèi)存及資源
抗并發(fā),nginx 處理請(qǐng)求是異步非阻塞的,而apache 則是阻塞型的,在高并發(fā)下nginx 能保持低資源低消耗高性能
高度模塊化的設(shè)計(jì),編寫模塊相對(duì)簡(jiǎn)單
提供負(fù)載均衡
社區(qū)活躍,各種高性能模塊出品迅速
總結(jié)
Nginx優(yōu)點(diǎn):負(fù)載均衡、反向代理、處理靜態(tài)文件優(yōu)勢(shì)。nginx處理靜態(tài)請(qǐng)求的速度高于Apache優(yōu)點(diǎn):相對(duì)于Tomcat服務(wù)器來說處理靜態(tài)文件是它的優(yōu)勢(shì),速度快。Apache是靜態(tài)解析,適合靜態(tài)HTML、圖片等。
Tomcat:動(dòng)態(tài)解析容器,處理動(dòng)態(tài)請(qǐng)求,是編譯JSPServlet的容器,Nginx有動(dòng)態(tài)分離機(jī)制,靜態(tài)請(qǐng)求直接就可以通過Nginx處理,動(dòng)態(tài)請(qǐng)求才轉(zhuǎn)發(fā)請(qǐng)求到后臺(tái)交由Tomcat進(jìn)行處理。
Apache在處理動(dòng)態(tài)有優(yōu)勢(shì),Nginx并發(fā)性比較好,CPU內(nèi)存占用低,如果rewrite頻繁,那還是Apache較適合。
反向代理的理解:
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,
并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器。