當前位置: 華文問答 > 數碼

tomcat 與 nginx,apache的區別是什麽?

2015-07-15數碼

Web Server 的概念太寬泛了。

嚴格的來說,Apache/Nginx 應該叫做「HTTP Server」;而 Tomcat 則是一個「Application Server」,或者更準確的來說,是一個「Servlet/JSP」套用的容器(Ruby/Python 等其他語言開發的套用也無法直接執行在 Tomcat 上)。

一個 HTTP Server 關心的是 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 分發到客戶端。