摘自nginx蔗坯、apache和tomcat之間的關(guān)系和區(qū)別-厚積而薄發(fā)-51CTO博客
Apache/Nginx?應(yīng)該叫做?HTTP Server,即安裝后生成httpd服務(wù)燎含。
Tomcat?則是一個?Application Server宾濒,或者更準確的來說,是一個「Servlet/JSP」應(yīng)用的容器(Ruby/Python 等其他語言開發(fā)的應(yīng)用也無法直接運行在 Tomcat 上)
**********
????一個 HTTP服務(wù)器屏箍,其關(guān)心的是 HTTP 協(xié)議層面的傳輸和訪問控制绘梦,所以在 Apache/Nginx 上你可以看到代理橘忱、負載均衡等功能。
????客戶端通過 HTTP Server 訪問服務(wù)器上存儲的資源(HTML 文件卸奉、圖片文件等等)钝诚。通過 CGI 技術(shù),也可以將處理過的內(nèi)容通過 HTTP Server 分發(fā)榄棵,但是一個 HTTP Server 始終只是把服務(wù)器上的文件如實的通過 HTTP 協(xié)議傳輸給客戶端凝颇。
而應(yīng)用服務(wù)器,則是一個應(yīng)用執(zhí)行的容器疹鳄。它首先需要支持開發(fā)語言的 Runtime(對于 Tomcat 來說拧略,就是 Java),保證應(yīng)用能夠在應(yīng)用服務(wù)器上正常運行瘪弓。其次垫蛆,需要支持應(yīng)用相關(guān)的規(guī)范,例如類庫腺怯、安全方面的特性袱饭。對于 Tomcat 來說,就是需要提供 JSP/Sevlet 運行需要的標(biāo)準類庫呛占、Interface 等虑乖。
**********
????為了方便,應(yīng)用服務(wù)器往往也會集成 HTTP Server 的功能晾虑,但是不如專業(yè)的 HTTP Server 那么強大决左,所以應(yīng)用服務(wù)器往往是運行在 HTTP Server 的背后,執(zhí)行應(yīng)用走贪,將動態(tài)的內(nèi)容轉(zhuǎn)化為靜態(tài)的內(nèi)容之后佛猛,通過 HTTP Server 分發(fā)到客戶端。
打個比方:
????nginx / apache是一輛卡車坠狡,上面可以裝一些東西如html等(靜態(tài)的)继找。但是不能裝水(動態(tài)的),要裝水必須要有桶(容器)逃沿,Tomcat就是一個桶(裝像Java這樣的水)婴渡,而這個桶也可以放在車上,也可以不放在卡車上凯亮。
客戶端(瀏覽器):人边臼;
????nginx / apache:卡車;
靜態(tài)頁面:毛巾假消;
tomcat:水桶柠并;
動態(tài)頁面:水。
人要拿毛巾,可以直接從卡車上拿染视琛鸣戴;
????人要拿水,需要先通過卡車找到車上的桶粘拾,才能取得(桶可以不放在車上窄锅,把桶單獨放在別的地方人也可以取到水);
nginx和apache的區(qū)別
?1缰雇、nginx相對于apache的優(yōu)點
2入偷、作為 Web 服務(wù)器:相比 Apache,Nginx 使用更少的資源械哟,支持更多的并發(fā)連接疏之,體現(xiàn)更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎戒良。
?3体捏、Nginx 配置簡潔, Apache 復(fù)雜 冠摄,Nginx 靜態(tài)處理性能比 Apache 高 3倍以上 糯崎,Apache 對 PHP 支持比較簡單,Nginx 需要配合其他后端用 河泳,Apache 的組件比 Nginx 多 沃呢,現(xiàn)在 Nginx 才是 Web 服務(wù)器的首選
##Nginx對動態(tài)處理請求弱,這個我想與它本身的實現(xiàn)有關(guān)吧拆挥,它需要與其他模塊結(jié)合才能支持PHP等語言薄霜,而Apache則支持得較好,如果找到了底層實現(xiàn)的根本原因纸兔,歡迎留言指導(dǎo)~
?4惰瓜、最核心的區(qū)別在于apache是同步多進程模型,一個連接對應(yīng)一個進程汉矿;nginx是異步的崎坊,多個連接(萬級別)可以對應(yīng)一個進程