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:水桶;

    動態頁面:水。

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

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




參考出處:

http://www.zhihu.com/question/32212996

http://www.zhihu.com/question/19571087

http://zhidao.baidu.com/link?url=FoBLoDZ52YLHVDnigb0q22NktBxRBqj0h38GngjKEnq2Vi5aZKDfGEfvGNN-5jGCn_FUELLXkx9TW-9eurmzDa


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章