tomcat與nginx,apache的區別是什麼?
tomcat與nginx,apache的區別是什麼?
這三者都是web server,那他們各自有什麼特點呢?他們之間的區別是什麼呢?nginx和tomcat在效能上面有何異同。tomcat用在java後臺程式上,java後臺程式難道不能用apache和nginx嗎?
一、定義
1、Apache
Apache HTTP Server(簡稱Apache)是Apache軟體基金會的一個開放原始碼的網頁,它是一個模組化的伺服器,可以執行在幾乎所有廣泛使用的計算機平臺上。其屬於應用伺服器。
Apache支援模組多,效能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴充套件指令碼、模組等支援動態頁面等。
缺點:配置相對複雜,自身不支援動態頁面。
優點:相對於Tomcat伺服器來說處理靜態檔案是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片等。 (Apche可以支援PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。)
2、Tomcat
Tomcat 是Apache 軟體基金會(Apache Software Foundation)的Jakarta 專案中的一個核心專案。Tomcat 伺服器是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器。
Tomcat是應用(Java)伺服器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充套件,但是可以獨立於Apache執行。
缺點:可以說Tomcat 只能用做java伺服器 優點:動態解析容器,處理動態請求,是編譯JSP/Servlet的容器。
3、Nginx
Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,是一個高效能的HTTP和反向代理伺服器,同時也是一個IMAP/POP3/SMTP 代理伺服器。其特點是佔有記憶體少,併發能力強,易於開發,部署方便。Nginx 支援多語言通用伺服器。
缺點:Nginx 只適合靜態和反向代理。 優點:負載均衡、反向代理、處理靜態檔案優勢。Nginx 處理靜態請求的速度高於Apache。 Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到後臺交由Tomcat進行處理。
二、Tomcat結合Apache、Nginx 使用
Tomcat雖然是一個servlet和jsp容器,但是它也是一個輕量級的web伺服器。它既可以處理動態內容,也可以處理靜態內容。不過,tomcat的最大優勢在於處理動態請求,處理靜態內容的能力不如apache和nginx,並且經過測試發現,tomcat在高併發的場景下,其接受的最大併發連線數是有限制的,連線數過多會導致tomcat處於"僵死"狀態,因此,在這種情況下,我們可以利用nginx的高併發,低消耗的特點與tomcat一起使用。因此,tomcat與nginx、apache結合使用共有如下幾點原因:
1、tomcat處理html的能力不如Apache和nginx,tomcat處理靜態內容的速度不如apache和nginx。
2、tomcat接受的最大併發數有限,連線數過多,會導致tomcat處於"殭屍"狀態,對後續的連線失去響應,需要結合nginx一起使用。
通常情況下,tomcat與nginx、Apache結合使用,nginx、apache既可以提供web服務,也可以轉發動態請求至tomcat伺服器上。但在一個高效能的站點上,通常nginx、apache只提供代理的功能,也就是轉發請求至tomcat伺服器上,而對於靜態內容的響應,則由前端負載均衡器來轉發至專門的靜態伺服器上進行處理。
三、區別
1、Nginx和tomcat的區別
nginx常用做靜態內容服務和代理伺服器,直接外來請求轉發給後面的應用伺服器(tomcat,Django等),tomcat更多用來做一個應用容器,讓java web app泡在裡面的東西。嚴格意義上來講,Apache和nginx應該叫做HTTP Server,而tomcat是一個Application Server是一個Servlet/JSO應用的容器。 客戶端通過HTTP Server訪問伺服器上儲存的資源(HTML檔案,圖片檔案等),HTTP Server是中只是把伺服器上的檔案如實通過HTTP協議傳輸給客戶端。 應用伺服器往往是執行在HTTP Server的背後,執行應用,將動態的內容轉化為靜態的內容之後,通過HTTP Server分發到客戶端 nginx只是把請求做了分發,不做處理。
2、nginx和Apache的區別
Apache是同步多程序模型,一個連線對應一個程序,而nginx是非同步的,多個連線(萬級別)可以對應一個程序。 nginx輕量級,抗併發,處理靜態檔案好 Apache超穩定,對PHP支援比較簡單,nginx需要配合其他後端用,處理動態請求有優勢,建議使用前端nginx抗併發,後端apache叢集,配合起來會更好 nignx的正向代理和反向代理。
四、總結
1、Nginx優點:負載均衡、反向代理、處理靜態檔案優勢。nginx處理靜態請求的速度高於apache。
2、Apache優點:相對於Tomcat伺服器來說處理靜態檔案是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片等。
3、Tomcat:動態解析容器,處理動態請求,是編譯JSPServlet的容器,Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到後臺交由Tomcat進行處理。
4、Apache在處理動態有優勢,Nginx併發性比較好,CPU記憶體佔用低,如果rewrite頻繁,那還是Apache較適合。
Apache和Nginx是Web伺服器業務中的佼佼者。它們共同佔了Web流量的近50%。作為兩個最普遍和最受歡迎的開源Web伺服器,它們朝著一個共同的目標努力,即照顧各種工作負載,以滿足Windows和UNIX等現代作業系統在不同環境下的需求。
儘管Apache是Web伺服器業務中的知名開源專案,但Nginx擁有如此之多的網站,以及它管理Web流量的速率,這是無可挑剔的。
留言
張貼留言