回覆列表
-
1 # 一個存在感小透明
-
2 # 網路圈
首先來說,Nginx和Tomcat都屬於應用伺服器軟體,而且這兩者的佔有率都很高。不少同學可能分不清楚這兩者的區別是什麼,而且有疑惑,為什麼Java專案都是佈署在Tomcat上而不是Nginx上面呢?
要清楚這個問題,那我們要先搞清楚這兩者的定位。
1、Nginx
Nginx是一款HTTP和反向代理伺服器,它的特點就是:輕量級、高效能、併發能力突出。
請注意,Nginx並身是不具備動態指令碼處理能力的,它之所以“支援”動態指令碼解析,其實是透過FastCGI來實現的請求轉發的。比如LNMP架構模式下,並不是說Nginx來執行PHP的,而是Nginx將請求轉發至PHP-FPM來進行解析執行的。
所以說Nginx更多的是用來做反向代理伺服器的,處理靜態檔案也很不錯。
2、Tomcat
Tomcat嚴格上說不能稱為是HTTP Web伺服器,它其實是Web容器,是Servlet容器!而我們說的Apache是HTTP Web伺服器。
是不是有點暈暈的感覺?
說得通俗點,Apache和Nginx一樣,是Web伺服器,可以處理靜態網頁檔案,但對於PHP、JSP這類動態內容就不行了,需要Web容器來處理它們。
Tomcat可以理解為是Apache的一個擴充套件,而且能獨立執行(即:不需要額外安裝Apache就可以執行)!說到這裡,是不是和PHP-FPM一樣?
綜上所述,Web伺服器和Web容器指的可不是同一個東西!Nginx和Apache都是Web伺服器,而Tomcat和PHP-FPM充當的是Web容器。
當然在現實中,我們往往是把Nginx加在Tomcat之前,作為代理伺服器,Tomcat作為後端處理。
在BAT裡工作少不了要接觸Nginx和Tomcat。Nginx是一個https和反向代理伺服器,Tomcat是一個web伺服器。
雖然聽起來都是伺服器,但是區別還是很大的,接下來我們分別來介紹他們在網際網路當中的作用。
TomcatTomcat來自赫赫有名的Apache基金會,由於其先進性,穩定性與免費,得到了眾多JAVA開發者的青睞。就連12306網站的後臺,都是部署在Tomcat上的。
Tomcat是一個輕量級的web應用伺服器,無論是否前後端分離,都可以將服務部署在Tomcat上。講到這裡,我們就可以知道,程式設計師開發的程式碼經過編譯,就是放在Tomcat下的。
Tomcat資料夾下有多個資料夾包括bin,用於儲存啟動,停止等指令碼;
conf資料夾用於儲存Tomcat的配置,比如配置class檔案位置的
server.xml
檔案;log資料夾用於儲存Tomcat的執行日誌,執行中的日誌會儲存在
catalina.out
檔案中,可以用tail -fcatalina.out
命令來實時檢視日誌輸出;還有webapps資料夾,這裡用於儲存編譯後的前後端執行檔案。
NginxNginx並不是一個web應用伺服器,程式設計師寫的程式碼也不會部署在它的資料夾下。用一句話說,它主要負責轉發請求給它身後的Tomcat,即一臺Nginx通常指向了多臺Tomcat。怎麼理解呢,一個系統可能出於降低耦合與分散式的需要,將功能分散給不同的Tomcat,但是對外必須有一個統一的域名,而一個域名只能繫結一個IP(大公司內網是如此),這一個域名怎麼指向多個Tomcat呢,此時就用到了Nginx,只需要將域名指向Nginx,然後由Nginx根據配置,將請求轉發給不同地址的Tomcat就可以了。這就是Nginx的反向代理能力。
根據我的解釋,我想大家已經清楚,Nginx與Tomcat是一個互補與合作的關係,各自負責不同的工作,對外提供一個完整的服務給使用者。