1. 程式人生 > >Apache和Tomcat的區別及Web伺服器,容器和應用伺服器區別問題

Apache和Tomcat的區別及Web伺服器,容器和應用伺服器區別問題

清理書籤的時候發現了遺留的Apache和Tomcat的區別的問題。打算把剛開始學習Servlet的時候的問題一同解決了,剛開始學習J2EE的時候,先學習的是Servlet,執行需要Tomcat,當時我很鬱悶這是什麼東西,什麼Web容器,真不懂,後面請教了朋友,朋友說暫時把它當成一個伺服器理解就好了。


接下來問題有:
1、什麼是伺服器?
2、Web伺服器,Web容器和應用伺服器的區別?
3、Apache和Tomcat的區別?
4、都是伺服器,那麼我們經常還聽到Nginx這樣的伺服器,和Apache的區別?

1、什麼是伺服器

檢視Apache的定義時,會發現,Apache為Web server,也就是Web伺服器。

Web伺服器是指能夠為發出請求的瀏覽器提供文件的程式。伺服器是一種被動程式,只有瀏覽器發出請求的時候才會響應。應用層使用的是HTTP協議。

2、Web伺服器,Web容器和應用伺服器的區別

Web Server,Web container和Application Server區別。

Web Server,Web伺服器,同上面所說,
Web伺服器是指能夠為發出請求的瀏覽器提供文件的程式。伺服器是一種被動程式,只有瀏覽器發出請求的時候才會響應。應用層使用的是HTTP協議。目前最主流的三個Web伺服器是Apache Nginx IIS。

Web容器是一種伺服器程式,在伺服器埠就有一個提供相應服務的程式。所以現在知道為什麼Tomcat有預設的埠——8080。一個伺服器可以有多個容器。

如Tomcat,收到瀏覽器的請求之後還會解析Servlet,然後再把Servlet處理後的結果返回給瀏覽器。其實Tomcat既是Web伺服器也是Web容器。為什麼這樣說,第三點會講到。

而應用伺服器,這裡有個區分它與Web伺服器的答案:
What is the difference between application server and web server?

Web伺服器設計服務於HTTP內容,應用伺服器不只限於HTTP。Web伺服器服務於靜態內容,有外掛支援動態語言,
應用伺服器也具有Web伺服器的這些東西,除此它還支援程式級的服務,如連線池,事務支援,資訊服務等。

至於Tomcat是不是應用伺服器,那就不好說了。


3、Apache和Tomcat的區別

Apache指的是Apache HTTP Server。
stackoverflow裡面的這個問題雖然被關閉了,但是有一個評論寫的部落格挺好的。
What is Tomcat? Is it a Web Server? What can Tomcat do? How is it different than Apache Web Server?

裡面就講到:

Tomcat是一個Servlet/Jsp容器,它同時也作為一個web伺服器使用。

Tomcat = ( Web Server + Servlet container + JSP environment ),因為我們知道JSP也是轉譯為Servlet的,Tomcat接收請求之後,如果是JSP頁面的話,Tomcat裡面的JSP引擎可以將JSP轉換為Servlet類。

從這裡也可以看到,
其實Tomcat既是Web伺服器也是Web容器。

如果是Servlet類的話,直接就是Servlet引擎載入Servlet類並且執行,然後以HTML的格式輸出,再返回給瀏覽器。

Apache是設計服務於靜態web頁面的web伺服器。如果是Apache來接收jsp請求,它根本就不知道這是什麼東西,所以返回的並不是我們想要的結果,但是靜態頁面的話,如http://www.apache.com/index.html這樣的請求的時候,Apache就直接將這個頁面返回給請求的瀏覽器了。


4、都是伺服器,那麼我們經常還聽到Nginx這樣的伺服器,和Apache的區別

Nginx是engine x的縮寫,與Apache不同的是,Nginx是一款高效能的HTTP和反向代理伺服器。
其實這塊我是接觸很少的,
但是之前見過他人的部落格掛掉的時候出了這個Nginx,就一直很好奇這是什麼東西,
還有一個師兄用Raspberry Pi加Nginx加PHP發了個Helloworld的時候,也讓我感覺很是神奇。


此篇比較理論,就當練英文和了解基本的理論知識用了。