在BAT里工作少不了要接觸Nginx和Tomcat。Nginx是一個https和反向代理伺服器,Tomcat是一個web伺服器。

雖然聽起來都是伺服器,但是區別還是很大的,接下來我們分別來介紹他們在互聯網當中的作用。

Tomcat

Tomcat來自赫赫有名的Apache基金會,由於其先進性,穩定性與免費,得到了眾多JAVA開發者的青睞。就連12306網站的後台,都是部署在Tomcat上的。

Tomcat是一個輕量級的web應用伺服器,無論是否前後端分離,都可以將服務部署在Tomcat上。講到這裡,我們就可以知道,程序員開發的代碼經過編譯,就是放在Tomcat下的。

Tomcat文件夾下有多個文件夾包括bin,用於存儲啟動,停止等腳本;

conf文件夾用於存儲Tomcat的配置,比如配置class文件位置的

server.xml

文件;

log文件夾用於存儲Tomcat的執行日誌,運行中的日誌會存儲在

catalina.out

文件中,可以用tail -f

catalina.out

命令來實時查看日誌輸出;

還有webapps文件夾,這裡用於存儲編譯後的前後端執行文件。

Nginx

Nginx並不是一個web應用伺服器,程序員寫的代碼也不會部署在它的文件夾下。用一句話說,它主要負責轉發請求給它身後的Tomcat,即一台Nginx通常指向了多台Tomcat。怎麼理解呢,一個系統可能出於降低耦合與分散式的需要,將功能分散給不同的Tomcat,但是對外必須有一個統一的域名,而一個域名只能綁定一個IP(大公司內網是如此),這一個域名怎麼指向多個Tomcat呢,此時就用到了Nginx,只需要將域名指向Nginx,然後由Nginx根據配置,將請求轉發給不同地址的Tomcat就可以了。這就是Nginx的反向代理能力。

根據我的解釋,我想大家已經清楚,Nginx與Tomcat是一個互補與合作的關係,各自負責不同的工作,對外提供一個完整的服務給用戶。

以上是我的淺見,歡迎各位在評論區留言評論點贊。

我是蘇蘇思量,來自BAT的Java開發工程師,每天分享科技類見聞,歡迎關注我,與我共同進步。


首先來說,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作為後端處理。

以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我了解更多科技知識!


nginx和tomcat最常見的地方就是負載均衡。當系統有大量用戶訪問時,通常會增加伺服器來進行擴展,使用集群的方式提供整個系統的請求處理能力。

nginx通常被用來分發請求,tomcat通常被用來部署具體業務。當大量請求進入時,nginx可根據配置的權重,將請求分發到不同的tomcat上進行業務處理;當有tomcat意外掛掉了,nginx可以將其從集群中剔除掉。

總的來說,nginx就行一個酒店的前台,當有客人來住店,前台(nginx)就將其分配到不同的房間(tomcat)。


推薦閱讀:
相关文章