這三者都是web server,那他們各自有什麼特點呢?他們之間的區別是什麼呢?nginx和tomcat在效能上面有何異同。tomcat用在java後臺程式上,java後臺程式難道不能用apache和nginx嗎?
-
1 # 寫程式設計師的程式碼
-
2 # 你看我獨角獸嗎
Apache和Nginx是Web伺服器業務中的佼佼者。它們共同佔了Web流量的近50%。作為兩個最普遍和最受歡迎的開源Web伺服器,它們朝著一個共同的目標努力,即照顧各種工作負載,以滿足Windows和UNIX等現代作業系統在不同環境下的需求。
儘管Apache是Web伺服器業務中的知名開源專案,但Nginx擁有如此之多的網站,以及它管理Web流量的速率,這是無可挑剔的。
什麼是Apache?Apache HTTP Server或簡稱為“ Apache”,是由一群開發人員在Apache Software Foundation的贊助下開發和維護的開源高效能Web伺服器軟體。這是一個協作式Web伺服器專案,旨在根據當前的HTTP標準建立功能強大,安全有效的商業級Web伺服器。這是一個聯合專案,由遍佈全球的志願者開放社群管理,目的是使用Internet開發HTTP Web伺服器及其隨附文件。自1995年問世以來,Apache一直是Web伺服器市場的領先領導者。它在2009年達到了1億個網站。
由於Apache的電源相容性和多平臺支援,它仍然是伺服器管理員中的首選。儘管Apache可以在幾乎所有主要作業系統(包括Windows,Linux,UNIX,OSX和NetWare)上高效執行,但通常與Linux結合使用。它的體系結構簡單性和靈活性使其成為管理員首選的選擇,因為早期社群對創新和嘗試新技術有一定的需求,而Apache正是它的核心。Apache成為了網際網路的支柱骨幹。
什麼是Nginx?目前,Apache的強大地位已受到其潛在競爭對手Nginx的打擊。Nginx也是最早獲得全球認可的競爭者之一,它還是旨在滿足現代Web需求的可靠Web伺服器平臺。Nginx由俄羅斯開發人員Igor Sysoev開發,是一個免費的開放原始碼HTTP伺服器,也可以用作反向代理,郵件代理和常規TCP / UDP代理伺服器。
它致力於以最少的資源有效地為大量併發使用者提供服務。在無法處理大量Web流量時候,Nginx就起到了作用。
儘管Nginx在許多方面無法與功能豐富的Apache競爭,但其非同步狀態和單執行緒體系結構使其成為選擇Apache的明智選擇。由於其資源效率,輕量級體系結構和高併發性,它通常被管理員首選。最好的部分是,它可以部署為獨立的HTTP伺服器,以使用最少的資源來改進Web伺服器的體系結構。
加上其以有限的硬體資源快速有效地服務靜態流量的能力,無與倫比。另外,Nginx也可以成為潛在的衝擊吸收者,它將保護Apache伺服器免受突然的流量高峰和安全漏洞的影響。簡而言之,Nginx提供了所有基本的HTTP伺服器功能,而不會犧牲其使用有限的硬體資源處理多個請求的能力。
Apache和Nginx之間的區別儘管Apache和Nginx都是Web伺服器業務的兩個主要參與者,它們跨越Internet上50%的Web流量,但它們彼此不同。Apache是開放原始碼的HTTP伺服器,而Nginx是高效能的非同步Web伺服器和反向代理伺服器。Apache HTTP伺服器中的支援,錯誤修復和應用程式開發由來自世界各地的使用者社群管理和維護,並由Apache Software Foundation協調。Nginx的支援和維護由一家成立於2011年的同名公司負責。兩者之間的主要區別是兩者處理客戶端請求的方式。儘管Apache提供了多種處理客戶端請求和Web流量的多處理模組,但Nginx卻被設計為以最少的硬體資源同時處理多個客戶端請求。在Apache HTTP伺服器中,單個執行緒僅與一個連線相關聯,而Nginx中的單個執行緒可以處理多個連線。所有程序與其他連線一起放入事件迴圈中,並進行非同步管理。此過程消耗較少的記憶體,從而提高了效能。Apache具有缺乏可伸縮性的多執行緒體系結構。另一方面,Nginx遵循非同步事件驅動的方法來處理多個客戶端請求。它的事件驅動體系結構經過精心設計,即使在繁忙的流量下也可以提高效能。Apache使用常規方法提供靜態內容,並在Web伺服器本身內部本地處理動態內容。另一方面,Nginx缺乏內部處理動態內容的能力。實際上,它依賴於外部流程來執行。總的來說,Apache和Nginx都是開放原始碼的高效能Web伺服器,能夠處理各種工作負載以滿足現代Web需求。它們在概念上彼此接近,但在Web伺服器業務中卻是緊密的競爭對手。Apache已經20年來一直是Web伺服器生態系統的領導者,並且廣受歡迎,但是Nginx並非沒有其應有的優勢。
雖然我不認為Apache已經成為過去,因為目前Apache還是佔一部分比例,但Nginx應該是Web應用程式和網站的未來。
-
3 # 技術猿小黃
Tomcat與Nginx、Apache都是web server。但是它們在功能上和使用定位上,還是有區分的。
什麼是web server?顧名思義,web server就是提供web服務的server,即web伺服器或網站伺服器,主要提供網上資訊瀏覽服務。當在瀏覽器輸入一個網址之後,瀏覽器會把這個HTTP請求傳送給對應的web伺服器,web伺服器經過相關處理,會返回HTTP響應,瀏覽器把接收到的響應資料經過渲染,就變成我們看到的網頁了。
在web伺服器上完成相關處理的是web服務,它是一組執行在web伺服器上的應用程式軟體。打個比方,web伺服器就是你的電腦,web服務軟體就是電腦上執行的QQ之類的應用程式。基本上web伺服器是專用的,只會執行web服務程式軟體,所以web服務和web伺服器可以理解為同一個事物。
目前常用的web伺服器軟體有:apache、nginx、Tomcat、iis 、gws
什麼是 Apache?Apache隸屬於Apache軟體基金會的一個開放原始碼的web伺服器軟體,由於其開源免費、跨平臺和安全性被廣泛使用,是世界使用排名第一的Web伺服器軟體,是中小型web服務的主流。目前常用的是Apache 2.2系列。
Apache優點:
功能強大。Apache自帶很多功能模組,可以根據需求編譯自己需要的模組配置簡單。Apache的配置檔案非常簡單,通過簡單的配置可以實現強大的功能效能穩定。Apache在高負載請求下效能卓越Apache缺點:
自身只支援靜態網頁,對於jsp、php等動態網頁不支援,可配置動靜分離。Apache是以程序為基礎的機構,比執行緒系統開銷更大。什麼是 Nginx?nginx是一個有俄羅斯人開發的免費開源、輕量級、高效能 Web 伺服器軟體,是世界使用排名第二的Web伺服器軟體。由於其高效能和輕量級的特性,nginx的使用量不斷在上升,衝擊著apache第一的寶座。是大型網站web服務的主流。在功能上,nginx不但是一個優秀的web服務軟體,還具有反向代理功能和快取功能。
nginx優點:
支援高併發。能支援幾萬的併發連線消耗資源少。處理靜態網頁時,比apache佔用更低的系統資源配置簡單。與Apache相比配置還更簡單。nginx的缺點:
nginx本身不支援處理動態網頁。nginx可以通過配置動靜分離實現處理動態網頁,處理php網頁,需要安裝FastCGI程序管理器,將php請求轉發給FastCGI程序管理器處理。處理jsp網頁,可以將請求轉發給對應的Java伺服器。nginx是主程序+多個子執行緒。這既是nginx效能卓越的優點所在,也存在潛在的缺點,當nginx主程序掛掉之後,整個nginx伺服器將會停止提供服務。什麼是 Tomcat?Tomcat是Apache軟體基金會Jakarta專案的一個核心專案,是一個開源免費的web伺服器。Tomcat一直是中小企業動態web服務的主流,常用作解析Java程式的容器。目前常用的是Tomcat6和Tomcat7系列。
Tomcat的優點:
支援servlet和jsp,可以很好的處理動態網頁跨平臺。在window系統和Linux系統都能很好的執行Tomcat的缺點:
處理靜態網頁與apache和nginx相比效率不高。可配置性不強。Tomcat、nginx、apache的區別和聯絡Tomcat和apache的區別和聯絡由於Apache處理靜態網頁效能更好,Tomcat一般用於處理動態網頁,Tomcat和Apache在功能上有一定的互補性,所以在nginx崛起之前,常常將Tomcat和Apache進行整合配合使用,在Apache上配置動靜分離。
當客戶端請求靜態頁面時,由Apache響應請求;當客戶端請求動態頁面時,則由Apache將請求轉發給Tomcat伺服器,由Tomcat伺服器進行處理。保障了應用的可拓展性和安全性。在nginx崛起之後,nginx逐漸替代Apache的功能。
nginx和apache的區別和聯絡nginx同樣都是效能卓越的web伺服器。但是nginx作為後起之秀,相比Apache有了更多的改進。
在效能上,nginx佔用系統資源更少,能支援更多的併發連線,達到更高的訪問效率
在功能上,nginx還是一個性能堪比haproxy的反向代理軟體,甚至nginx部署配置更加簡單、方便。
所以說nginx是一款很有發展潛力的web伺服器軟體,未來一定可以超越Apache,稱為世界排名第一的web伺服器軟體
總結nginx由於高效能、輕量級和支援反向代理功能,常用做七層負載均衡器。Apache歷史悠久、效能穩定,常用作web伺服器,可與nginx搭配使用。Tomcat支援處理jsp動態網頁,常用作解析Java程式的容器,可與nginx搭配使用。當應用的環境為window作業系統時,使用的web伺服器軟體是iis,也可以與nginx搭配使用。
-
4 # 雲渺書齋
Nginx是一款免費開源的高效能HTTP伺服器及反向代理伺服器,也是一個IMAP/POP3/SMTP 代理伺服器。Tomcat是一款免費開源的輕量級應用伺服器,它體積小、安裝部署方便、系統資源佔用率低,主要用於處理JSP頁面和Servlet。Apache是一個模組化的伺服器,可以執行在幾乎所有廣泛使用的計算機平臺上。其屬於web伺服器。Apache支援支援模組多,效能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴充套件指令碼、模組等支援動態頁面等。
TomcatTomcat伺服器最初是由Sun公司軟體架構師詹姆斯·鄧肯·戴維森開發,後來變為開源專案,並由Sun公司將其貢獻給了Apache軟體基金會。
Tomcat是一款免費開源的輕量級應用伺服器,它體積小、安裝部署方便、系統資源佔用率低,主要用於處理JSP頁面和Servlet,提供了作為應用伺服器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。
NginxNginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年釋出至今,憑藉開源的力量,已經接近成熟與完善。
Nginx功能豐富,可作為HTTP伺服器,也可作為反向代理伺服器,郵件伺服器。支援FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。並且支援很多第三方的模組擴充套件。
Nginx執行效率高、CPU記憶體佔用率低、代理功能強大、佔用資源少、支援更多的併發連線,主要用來做負載均衡和動靜分離。
Apache伺服器跨平臺能力強、安全效能高、執行速度快、效能相對穩定、功能擴充套件豐富,是一款被業界廣泛接受和使用的最流行的Web伺服器軟體。
Linux下能夠承受高併發訪問的Squid、Memcached都採用的是epoll,epoll是一種IO多路複用技術,可以非常高效的處理數以百萬計的socket控制代碼,比起select效率會高一些。epoll不會隨著監聽fd(檔案描述符)數目的增長而降低效率。select採用的是輪詢來處理,在高併發伺服器中,輪詢I/O是最耗時間的操作之一,輪詢的fd(檔案描述符)數目越多,自然耗時越多,效能越低。總結Nginx執行效率高、CPU記憶體佔用率低、代理功能強大、佔用資源少、支援更多的併發連線,主要用來做動靜分離和負載均衡。Apache在動態資源處理和穩定性方便要優於Nginx,但是靜態資源處理不如Nginx。Tomcat主要用於處理JSP頁面和Servlet。
一、定義
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較適合。