Web server
在硬體部分,一個網路伺服器是一個用來儲存網站的組成檔案(比如說 HTML 文件,圖片,CSS 樣式表,和 JavaScript 檔案)以及交付它們到終端使用者的裝置的計算機。它跟網際網路連線並可以通過域名像 mozilla.org 來被訪問。
在軟體部分,一個網路伺服器包括幾個控制網路使用者如何訪問託管檔案的部分,至少是一個 HTTP 伺服器 [HTTP server]。一個 HTTP 伺服器是一個能理解URLs (網路地址) 和 HTTP (你的瀏覽器檢視網頁時所用的協議) 的軟體。
Web server 在軟體部分它通過HTTP協議來提供靜態頁面內容和圖片服務.在很久之前,大多數內容都是靜態的,並且HTTP 1.0只是一種傳送檔案的方式。但在不久後web伺服器提供了CGI功能。這意味著我們可以為每個web請求啟動一個程式來產生動態內容。現在,HTTP協議已經很成熟了並且web伺服器變得更加複雜,擁有了像快取、安全和session管理這些附加功能。到現在web server 和 application server其實越來越趨向統一.
靜態和動態
粗略地說,一個伺服器可以提供靜態或者動態的內容。“靜態” 意味著 “保持原樣地提供”.“動態” 意味著伺服器會處理內容甚至實時地從一個資料庫中產生它。這個解決方案提供了更多的靈活性.
靜態網路伺服器(static web server),或者堆疊,由一個計算機(硬體)和一個 HTTP 伺服器(軟體)組成。我們稱它為 “靜態” 因為這個伺服器把它的託管檔案 “保持原樣” 地傳送到你的瀏覽器。
動態網路伺服器(dynamic web server) 由一個靜態的網路伺服器加上額外的軟體組成,最普遍的是一個應用伺服器 [application server] 和一個資料庫 [database]。我們稱它為 “動態” 因為這個應用伺服器會在通過 HTTP 伺服器傳送託管檔案到你的瀏覽器前,對這些託管檔案進行更新。
tomcat 與 nginx,apache的區別
嚴格的來說,Apache/Nginx 應該叫做「HTTP Server」;而 Tomcat 則是一個「Application Server」,或者更準確的來說,是一個「Servlet/JSP」應用的容器.
一個 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 分發到客戶端。
前後端分離的開發方式
現在我們公司的業務都是通過Nginx託管靜態的資源,(包括html, 圖片, css等).瀏覽器獲取到相應的靜態資源後, 通過Ajax向我們的業務後臺(Tomcat Application server)傳送請求獲取資料動態的生成頁面. 這裡Nginx就是一個http Server, Tomact就是Application server.