此文主要說明tomcat 、apache、 nginx的定義、區別及優缺點前端
1、 定義:
1. Apachenginx
Apache HTTP服務器是一個模塊化的服務器,能夠運行在幾乎全部普遍使用的計算機平臺上。其屬於應用服務器。Apache支持支持模塊多,性能穩定,Apache自己是靜態解析,適合靜態HTML、圖片等,但能夠經過擴展腳本、模塊等支持動態頁面等。web
(Apche能夠支持PHPcgiperl,可是要使用Java的話,你須要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。) 缺點:配置相對複雜,自身不支持動態頁面。apache
2. Tomcat:後端
Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,能夠認爲是Apache的擴展,可是能夠獨立於Apache運行。tomcat
3. Nginx服務器
Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音爲「engine X」,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。併發
2、 區別
1. Apache與Tomcat的比較app
相同點:負載均衡
- 二者都是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較適合。
真的平常工做中,通常的項目仍是用nginx+tomcat來作會多一點。