Apache,指的是Apache軟件基金會(huì)下的一個(gè)項(xiàng)目——Apache HTTP Server Project;Nginx同樣也是一款開(kāi)源的HTTP服務(wù)器軟件(當(dāng)然它也可以作為郵件代理服務(wù)器、通用的TCP代理服務(wù)器)。
HTTP服務(wù)器本質(zhì)上也是一種html' target='_blank'>應(yīng)用程序——它通常運(yùn)行在服務(wù)器之上,綁定服務(wù)器的IP地址并監(jiān)聽(tīng)某一個(gè)tcp端口來(lái)接收并處理HTTP請(qǐng)求,這樣客戶(hù)端(一般來(lái)說(shuō)是IE, Firefox,Chrome這樣的瀏覽器)就能夠通過(guò)HTTP協(xié)議來(lái)獲取服務(wù)器上的網(wǎng)頁(yè)(HTML格式)、文檔(PDF格式)、音頻(MP4格式)、視頻(MOV格式)等等資源。
下圖描述的就是這一過(guò)程:
不僅僅是Apache HTTP Server和Nginx,絕大多數(shù)編程語(yǔ)言所包含的類(lèi)庫(kù)中也都實(shí)現(xiàn)了簡(jiǎn)單的HTTP服務(wù)器方便開(kāi)發(fā)者使用:HttpServer (Java HTTP Server )Python SimpleHTTPServer使用這些類(lèi)庫(kù)能夠非常容易的運(yùn)行一個(gè)HTTP服務(wù)器,它們都能夠通過(guò)綁定IP地址并監(jiān)聽(tīng)tcp端口來(lái)提供HTTP服務(wù)。
Apache Tomcat則是Apache基金會(huì)下的另外一個(gè)項(xiàng)目,與Apache HTTP Server相比,Tomcat能夠動(dòng)態(tài)的生成資源并返回到客戶(hù)端。Apache HTTP Server和Nginx都能夠?qū)⒛骋粋€(gè)文本文件的內(nèi)容通過(guò)HTTP協(xié)議返回到客戶(hù)端,但是這個(gè)文本文件的內(nèi)容是固定的——也就是說(shuō)無(wú)論何時(shí)、任何人訪問(wèn)它得到的內(nèi)容都是完全相同的,這樣的資源我們稱(chēng)之為靜態(tài)資源。
動(dòng)態(tài)資源則與之相反,在不同的時(shí)間、不同的客戶(hù)端訪問(wèn)得到的內(nèi)容是不同的,例如:包含顯示當(dāng)前時(shí)間的頁(yè)面顯示當(dāng)前IP地址的頁(yè)面Apache HTTP Server和Nginx本身不支持生成動(dòng)態(tài)頁(yè)面,但它們可以通過(guò)其他模塊來(lái)支持(例如通過(guò)Shell、PHP、Python腳本程序來(lái)動(dòng)態(tài)生成內(nèi)容)。如果想要使用Java程序來(lái)動(dòng)態(tài)生成資源內(nèi)容,使用這一類(lèi)HTTP服務(wù)器很難做到。Java Servlet技術(shù)以及衍生的Java Server Pages技術(shù)可以讓Java程序也具有處理HTTP請(qǐng)求并且返回內(nèi)容(由程序動(dòng)態(tài)控制)的能力,Tomcat正是支持運(yùn)行Servlet/JSP應(yīng)用程序的容器(Container):
Tomcat運(yùn)行在JVM之上,它和HTTP服務(wù)器一樣,綁定IP地址并監(jiān)聽(tīng)TCP端口,同時(shí)還包含以下指責(zé):
管理Servlet程序的生命周期
將URL映射到指定的Servlet進(jìn)行處理
與Servlet程序合作處理HTTP請(qǐng)求——根據(jù)HTTP請(qǐng)求生成HttpServletResponse對(duì)象并傳遞給Servlet進(jìn)行處理,將Servlet中的HttpServletResponse對(duì)象生成的內(nèi)容返回給瀏覽器
雖然Tomcat也可以認(rèn)為是HTTP服務(wù)器,但通常它仍然會(huì)和Nginx配合在一起使用:動(dòng)靜態(tài)資源分離——運(yùn)用Nginx的反向代理功能分發(fā)請(qǐng)求:所有動(dòng)態(tài)資源的請(qǐng)求交給Tomcat,而靜態(tài)資源的請(qǐng)求(例如圖片、視頻、CSS、JavaScript文件等)則直接由Nginx返回到瀏覽器,這樣能大大減輕Tomcat的壓力。負(fù)載均衡,當(dāng)業(yè)務(wù)壓力增大時(shí),可能一個(gè)Tomcat的實(shí)例不足以處理,那么這時(shí)可以啟動(dòng)多個(gè)Tomcat實(shí)例進(jìn)行水平擴(kuò)展,而Nginx的負(fù)載均衡功能可以把請(qǐng)求通過(guò)算法分發(fā)到各個(gè)不同的實(shí)例進(jìn)行處理。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP !
相關(guān)推薦:
nginx關(guān)于root與alias的區(qū)別
PHP中的無(wú)限級(jí)分類(lèi)和無(wú)限嵌套評(píng)論
以上就是tomcat 與 nginx,Apache HTTP Server Project的區(qū)別的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選