nginx、apache和tomcat之間的關系和區別


 

 

Apache/Nginx 應該叫做 HTTP Server,即安裝后生成httpd服務。

Tomcat 則是一個 Application Server,或者更准確的來說,是一個「Servlet/JSP」應用的容器(Ruby/Python 等其他語言開發的應用也無法直接運行在 Tomcat 上)

**********

    一個 HTTP服務器,其關心的是 HTTP 協議層面的傳輸和訪問控制,所以在 Apache/Nginx 上你可以看到代理、負載均衡等功能。

    客戶端通過 HTTP Server 訪問服務器上存儲的資源(HTML 文件、圖片文件等等)。通過 CGI 技術,也可以將處理過的內容通過 HTTP Server 分發,但是一個 HTTP Server 始終只是把服務器上的文件如實的通過 HTTP 協議傳輸給客戶端。

而應用服務器,則是一個應用執行的容器。它首先需要支持開發語言的 Runtime(對於 Tomcat 來說,就是 Java),保證應用能夠在應用服務器上正常運行。其次,需要支持應用相關的規范,例如類庫、安全方面的特性。對於 Tomcat 來說,就是需要提供 JSP/Sevlet 運行需要的標准類庫、Interface 等。

**********

    為了方便,應用服務器往往也會集成 HTTP Server 的功能,但是不如專業的 HTTP Server 那么強大,所以應用服務器往往是運行在 HTTP Server 的背后,執行應用,將動態的內容轉化為靜態的內容之后,通過 HTTP Server 分發到客戶端。

打個比方:

    nginx / apache是一輛卡車,上面可以裝一些東西如html等(靜態的)。但是不能裝水(動態的),要裝水必須要有桶(容器),Tomcat就是一個桶(裝像Java這樣的水),而這個桶也可以放在車上,也可以不放在卡車上。

客戶端(瀏覽器):人;

    nginx / apache:卡車;

靜態頁面:毛巾;

tomcat:水桶;

動態頁面:水。

人要拿毛巾,可以直接從卡車上拿取;

    人要拿水,需要先通過卡車找到車上的桶,才能取得(桶可以不放在車上,把桶單獨放在別的地方人也可以取到水);

 

nginx和apache的區別

 1、nginx相對於apache的優點

2、作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的並發連接,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。

 3、Nginx 配置簡潔, Apache 復雜 ,Nginx 靜態處理性能比 Apache 高 3倍以上 ,Apache 對 PHP 支持比較簡單,Nginx 需要配合其他后端用 ,Apache 的組件比 Nginx 多 ,現在 Nginx 才是 Web 服務器的首選

##Nginx對動態處理請求弱,這個我想與它本身的實現有關吧,它需要與其他模塊結合才能支持PHP等語言,而Apache則支持得較好,如果找到了底層實現的根本原因,歡迎留言指導~

 4、最核心的區別在於apache是同步多進程模型,一個連接對應一個進程;nginx是異步的,多個連接(萬級別)可以對應一個進程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM