1、介紹:
Apache Apache HTTP服務器是一個模塊化的服務器,可以運行在幾乎所有廣泛使用的計算機平臺上。其屬于應用服務器。Apache支持支持模塊多,性能穩(wěn)定,Apache本身是靜態(tài)解析,適合靜態(tài)HTML、圖片等,但可以通過擴展腳本、模塊等支持動態(tài)頁面等。 (Apche可以支持PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache后臺支撐,將Java請求由Apache轉發(fā)給Tomcat處理。) 缺點:配置相對復雜,自身不支持動態(tài)頁面。
Tomcat: Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴展,但是可以獨立于Apache運行。
Nginx Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發(fā)音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。
2、區(qū)別:
1)Nginx和tomcat的區(qū)別
nginx常用做靜態(tài)內容服務和代理服務器,直接外來請求轉發(fā)給后面的應用服務器(tomcat,Django等),tomcat更多用來做一個應用容器,讓java web app泡在里面的東西。嚴格意義上來講,Apache和nginx應該叫做HTTP Server,而tomcat是一個Application Server是一個Servlet/JSO應用的容器。
客戶端通過HTTP Server訪問服務器上存儲的資源(HTML文件,圖片文件等),HTTP Server是中只是把服務器上的文件如實通過HTTP協(xié)議傳輸給客戶端。
應用服務器往往是運行在HTTP Server的背后,執(zhí)行應用,將動態(tài)的內容轉化為靜態(tài)的內容之后,通過HTTP Server分發(fā)到客戶端
注意:nginx只是把請求做了分發(fā),不做處理!?。?/p>
2)nginx和Apache的區(qū)別
Apache是同步多進程模型,一個連接對應一個進程,而nginx是異步的,多個連接(萬級別)可以對應一個進程。
nginx輕量級,抗并發(fā),處理靜態(tài)文件好
Apache超穩(wěn)定,對PHP支持比較簡單,nginx需要配合其他后端用,處理動態(tài)請求有優(yōu)勢,建議使用前端nginx抗并發(fā),后端apache集群,配合起來會更好
nignx的正向代理和反向代理
3、優(yōu)缺點比較
1) nginx相對于apache的優(yōu)點
輕量級,同樣起web 服務,比apache占用更少的內存及資源 抗并發(fā),nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發(fā)下nginx 能保持低資源低消耗高性能高度模塊化的設計,編寫模塊相對簡單提供負載均衡
社區(qū)活躍,各種高性能模塊出品迅速
2) apache 相對于nginx 的優(yōu)點
apache的 rewrite(重寫) 比nginx 的強大 ;
支持動態(tài)頁面;
支持的模塊多,基本涵蓋所有應用;
性能穩(wěn)定,而nginx相對bug較多。
3) 兩者優(yōu)缺點比較
Nginx 配置簡潔, Apache 復雜 ;
Nginx 靜態(tài)處理性能比 Apache 高 3倍以上 ;
Apache 對 PHP 支持比較簡單,Nginx 需要配合其他后端用;Apache 的組件比 Nginx 多 ;
apache是同步多進程模型,一個連接對應一個進程;nginx是異步的,多個連接(萬級別)可以對應一個進程;
nginx處理靜態(tài)文件好,耗費內存少;
動態(tài)請求由apache去做,nginx只適合靜態(tài)和反向;
Nginx適合做前端服務器,負載性能很好;
Nginx本身就是一個反向代理服務器 ,且支持負載均衡
Apache在處理動態(tài)有優(yōu)勢,Nginx并發(fā)性比較好,CPU內存占用低,如果rewrite頻繁,那還是Apache較適合。
總結:
Nginx 優(yōu)點:負載均衡、反向代理、處理靜態(tài)文件優(yōu)勢。nginx 處理靜態(tài)請求的速度高于 apache;?
Apache 優(yōu)點:相對于 Tomcat 服務器來說處理靜態(tài)文件是它的優(yōu)勢,速度快。Apache 是靜態(tài)解析,適合靜態(tài) HTML、圖片等。?
Tomcat:動態(tài)解析容器,處理動態(tài)請求,是編譯 JSP/Servlet 的容器,Nginx 有動態(tài)分離機制,靜態(tài)請求直接就可以通過 Nginx 處理,動態(tài)請求才轉發(fā)請求到后臺交由 Tomcat 進行處理。 Apache在處理動態(tài)有優(yōu)勢,Nginx 并發(fā)性比較好,CPU 內存占用低,如果 rewrite 頻繁,那還是 Apache 較適合。?