1. 程式人生 > >簡析 Tomcat 、Nginx 與 Apache 的區別

簡析 Tomcat 、Nginx 與 Apache 的區別

簡析 Tomcat 、Nginx 與 Apache 的區別

本文講的是簡析 Tomcat 、Nginx 與Apache的區別,

經常在用 apache 和 tomcat 等這些伺服器,可是總感覺還是不清楚他們之間有什麼關係,在用 tomcat 的時候總出現 apache,總是感到迷惑。這可能是很多初學伺服器應用技術的同學遇到的問題。

一、定義:

  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 本身就是一個反向代理伺服器 ,且支援負載均衡

3) 總結

Nginx 優點:負載均衡、反向代理、處理靜態檔案優勢。nginx 處理靜態請求的速度高於 apache; Apache 優點:相對於 Tomcat 伺服器來說處理靜態檔案是它的優勢,速度快。Apache 是靜態解析,適合靜態 HTML、圖片等。 Tomcat:動態解析容器,處理動態請求,是編譯 JSP/Servlet 的容器,Nginx 有動態分離機制,靜態請求直接就可以通過 Nginx 處理,動態請求才轉發請求到後臺交由 Tomcat 進行處理。 Apache在處理動態有優勢,Nginx 併發性比較好,CPU 記憶體佔用低,如果 rewrite 頻繁,那還是 Apache 較適合。 反向代理的理解: 反向代理(Reverse Proxy)方式是指以代理伺服器來接受 internet 上的連線請求,然後將請求轉發給內部網路上的伺服器, 並將從伺服器上得到的結果返回給 internet 上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。