簡析 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 能保持低資源低消耗高性能 高度模塊化的設計,編寫模塊相對簡單 提供負載均衡 社區活躍,各種高性能模塊出品迅速

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

  1. 總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章