Web上的server都叫Web server卓研,但是大家分工也有不同的但校。
nginx常用做靜態(tài)內容服務和代理服務器(不是你FQ那個代理),直面外來請求轉發(fā)給后面的應用服務(tomcat,django什么的)古劲,tomcat更多用來做做一個應用容器,讓java web app跑在里面的東西缰猴,對應同級別的有jboss,jetty等東西产艾。
但是事無絕對,nginx也可以通過模塊開發(fā)來提供應用功能滑绒,tomcat也可以直接提供http服務闷堡,通常用在內網(wǎng)和不需要流控等小型服務的場景。
apache用的越來越少了蹬挤,大體上和nginx功能重合的更多缚窿。
嚴格的來說棘幸,Apache/Nginx 應該叫做「HTTP Server」焰扳;而 Tomcat 則是一個「Application Server」,或者更準確的來說误续,是一個「Servlet/JSP」應用的容器(Ruby/Python 等其他語言開發(fā)的應用也無法直接運行在 Tomcat 上)吨悍。
一個 HTTP Server 關心的是 HTTP 協(xié)議層面的傳輸和訪問控制,所以在 Apache/Nginx 上你可以看到代理蹋嵌、負載均衡等功能育瓜。客戶端通過 HTTP Server 訪問服務器上存儲的資源(HTML 文件栽烂、圖片文件等等)躏仇。通過 CGI 技術,也可以將處理過的內容通過 HTTP Server 分發(fā)腺办,但是一個 HTTP Server 始終只是把服務器上的文件如實的通過 HTTP 協(xié)議傳輸給客戶端焰手。
而應用服務器,則是一個應用執(zhí)行的容器怀喉。它首先需要支持開發(fā)語言的 Runtime(對于 Tomcat 來說书妻,就是 Java),保證應用能夠在應用服務器上正常運行躬拢。其次躲履,需要支持應用相關的規(guī)范,例如類庫聊闯、安全方面的特性工猜。 對于 Tomcat 來說,就是需要提供 JSP/Sevlet 運行需要的標準類庫菱蔬、Interface 等篷帅。為了方便,應用服務器往往也會集成 HTTP Server 的功能,但是不如專業(yè)的 HTTP Server 那么強大犹褒,所以應用服務器往往是運行在 HTTP Server 的背后抵窒,執(zhí)行應用,將動態(tài)的內容轉化為靜態(tài)的內容之后叠骑,通過 HTTP Server 分發(fā)到客戶端李皇。
總結一下:
nginx是一個HTTP Server ,側重關心HTTP協(xié)議層面的傳輸和訪問控制
Tomcat是一個應用服務器宙枷,比如:將應用部署到tomcat服務器
兩者功能有重合掉房,但是側重點不同,目前都是將兩者相結合使用
————————————————
版權聲明:本文為CSDN博主「ratelfu」的原創(chuàng)文章慰丛,遵循CC 4.0 BY-SA版權協(xié)議卓囚,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weter_drop/java/article/details/89671457