一.定義:
Apache
Apache HTTP伺服器是一個子產品化的伺服器,可以運作在幾乎所有廣泛使用的計算機平台上。其屬于應用伺服器。Apache支援支援子產品多,性能穩定,Apache本身是靜态解析,适合靜态HTML、圖檔等,但可以通過擴充腳本、子產品等支援動态頁面等。
(Apche可以支援PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache背景支撐,将Java請求由Apache轉發給Tomcat處理。)
缺點:配置相對複雜,自身不支援動态頁面。
Tomcat:
Tomcat是應用(Java)伺服器,它隻是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充,但是可以獨立于Apache運作。
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比較
nginx相對于apache的優點
輕量級,同樣起web 服務,比apache占用更少的記憶體及資源
抗并發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發下nginx 能保持低資源低消耗高性能
高度子產品化的設計,編寫子產品相對簡單
提供負載均衡
社群活躍,各種高性能子產品出品迅速
apache 相對于nginx 的優點
apache的 rewrite 比nginx 的強大 ;
支援動态頁面;
支援的子產品多,基本涵蓋所有應用;
性能穩定,而nginx相對bug較多。
兩者優缺點比較
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較适合。
本文轉自willis_sun 51CTO部落格,原文連結:http://blog.51cto.com/willis/1852083,如需轉載請自行聯系原作者