這篇文章主要介紹了關於tomcat 與nginx,Apache HTTP Server Project的區別,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
Apache,指的是Apache軟體基金會下的一個專案-Apache HTTP Server Project;Nginx同樣也是開源的HTTP伺服器軟體(當然它也可以作為郵件代理伺服器、通用的TCP代理伺服器)。
HTTP伺服器本質上也是一種應用程式-它通常運行在伺服器之上,綁定伺服器的IP位址並監聽某一個tcp連接埠來接收並處理HTTP請求,這樣客戶端(一般來說是IE , Firefox,Chrome這樣的瀏覽器)就能夠透過HTTP協定來取得伺服器上的網頁(HTML格式)、文件(PDF格式)、音訊(MP4格式)、影片(MOV格式)等等資源。
下圖描述的就是這個過程:
不只是Apache HTTP Server和Nginx,絕大多數程式語言所包含的類別庫中也都實作了簡單的HTTP伺服器方便開發者使用:HttpServer (Java HTTP Server )Python SimpleHTTPServer使用這些類別庫能夠非常容易的運行一個HTTP伺服器,它們都能夠透過綁定IP位址並監聽tcp連接埠來提供HTTP服務。
Apache Tomcat則是Apache基金會下的另一個項目,與Apache HTTP Server相比,Tomcat能夠動態的生成資源並返回客戶端。 Apache HTTP Server和Nginx都能夠將某一個文字檔案的內容透過HTTP協定傳回客戶端,但這個文字檔案的內容是固定的-也就是說無論何時、任何人存取它所得到的內容都是完全相同的,這樣的資源我們稱為靜態資源。
動態資源則與之相反,在不同的時間、不同的客戶端存取得到的內容是不同的,例如:包含顯示當前時間的頁面顯示當前IP位址的頁面Apache HTTP Server和Nginx本身不支援生成動態頁面,但它們可以透過其他模組來支援(例如透過Shell、PHP、Python腳本程式來動態生成內容)。如果想要使用Java程式來動態產生資源內容,使用這一類HTTP伺服器很難做到。 Java Servlet技術以及衍生的Java Server Pages技術可以讓Java程式也具有處理HTTP請求並且返回內容(由程式動態控制)的能力,Tomcat正是支援執行Servlet/JSP應用程式的容器(Container):
Tomcat運行在JVM之上,它和HTTP伺服器一樣,綁定IP位址並監聽TCP端口,同時還包含以下指責:
管理Servlet程式的生命週期
將URL對應到指定的Servlet進行處理
與Servlet程式合作處理HTTP請求——根據HTTP請求產生HttpServletResponse物件並傳遞給Servlet進行處理,將Servlet中的HttpServletResponse物件產生的內容傳回瀏覽器
#雖然Tomcat也可以認為是HTTP伺服器,但通常它仍然會和Nginx配合在一起使用:動靜態資源分離-運用Nginx的反向代理功能分發請求:所有動態資源的請求交給Tomcat,而靜態資源的請求(例如圖片、影片、CSS、JavaScript檔案等)則直接由Nginx回到瀏覽器,這樣能大大減輕Tomcat的壓力。負載平衡,當業務壓力增大時,可能一個Tomcat的實例不足以處理,那麼這時可以啟動多個Tomcat實例進行水平擴展,而Nginx的負載平衡功能可以把請求透過演算法分發到各個不同的實例進行處理。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
以上是tomcat 與 nginx,Apache HTTP Server Project的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!