1. 程式人生 > >Apache,nginx,tomcat比較(轉載)

Apache,nginx,tomcat比較(轉載)

一、 定義:

1. Apache

Apache HTTP伺服器是一個模組化的伺服器,可以執行在幾乎所有廣泛使用的計算機平臺上。其屬於應用伺服器。Apache支援支援模組多,效能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴充套件指令碼、模組等支援動態頁面等。
(Apche可以支援PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。) 缺點:配置相對複雜,自身不支援動態頁面。

2. Tomcat:

Tomcat是應用(Java)伺服器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充套件,但是可以獨立於Apache執行。

3. Nginx

Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,Nginx,它的發音為“engine X”,是一個高效能的HTTP和反向代理伺服器,同時也是一個IMAP/POP3/SMTP 代理伺服器。

二、 比較

1. Apache與Tomcat的比較

相同點:

  • 兩者都是Apache組織開發的
  • 兩者都有HTTP服務的功能
  • 兩者都是免費的

不同點:

  • Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等),而Tomcat是Apache組織在符合Java EE的JSP、Servlet標準下開發的一個JSP伺服器.
  • Apache是一個Web伺服器環境程式,啟用他可以作為Web伺服器使用,不過只支援靜態網頁如(ASP,PHP,CGI,JSP)等動態網頁的就不行。如果要在Apache環境下執行JSP的話就需要一個直譯器來執行JSP網頁,而這個JSP直譯器就是Tomcat。
  • Apache:側重於HTTPServer ,Tomcat:側重於Servlet引擎,如果以Standalone方式執行,功能上與Apache等效,支援JSP,但對靜態網頁不太理想;
  • Apache是Web伺服器,Tomcat是應用(Java)伺服器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充套件,但是可以獨立於Apache執行。 實際使用中Apache與Tomcat常常是整合使用

如果客戶端請求的是靜態頁面,則只需要Apache伺服器響應請求。  如果客戶端請求動態頁面,則是Tomcat伺服器響應請求。 因為JSP是伺服器端解釋程式碼的,這樣整合就可以減少Tomcat的服務開銷。
可以理解Tomcat為Apache的一種擴充套件。

2. Nginx與Apache比較

1) nginx相對於apache的優點

  • 輕量級,同樣起web 服務,比apache佔用更少的記憶體及資源
  • 抗併發,nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能
  • 高度模組化的設計,編寫模組相對簡單
  • 提供負載均衡
  • 社群活躍,各種高效能模組出品迅速

2) apache 相對於nginx 的優點

  • apache的 rewrite 比nginx 的強大 ;
  • 支援動態頁面;
  • 支援的模組多,基本涵蓋所有應用;
  • 效能穩定,而nginx相對bug較多。

3) 兩者優缺點比較

  • Nginx 配置簡潔, Apache 複雜 ;
  • Nginx 靜態處理效能比 Apache 高 3倍以上 ;
  • Apache 對 PHP 支援比較簡單,Nginx 需要配合其他後端用;
  • Apache 的元件比 Nginx 多 ;
  • apache是同步多程序模型,一個連線對應一個程序;nginx是非同步的,多個連線(萬級別)可以對應一個程序;
  • nginx處理靜態檔案好,耗費記憶體少;
  • 動態請求由apache去做,nginx只適合靜態和反向;
  • Nginx適合做前端伺服器,負載效能很好;
  • Nginx本身就是一個反向代理伺服器 ,且支援負載均衡

總結

  • Nginx優點:負載均衡、反向代理、處理靜態檔案優勢。nginx處
    理靜態請求的速度高於apache;
  • Apache優點:相對於Tomcat伺服器來說處理靜態檔案是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片等。
  • Tomcat:動態解析容器,處理動態請求,是編譯JSP\Servlet的容器,Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到後臺交由Tomcat進行處理。
  • Apache在處理動態有優勢,Nginx併發性比較好,CPU記憶體佔用低,如果rewrite頻繁,那還是Apache較適合。