Web服務器和應用服務器之間的區(qū)別詳解
Web服務器簡介
什么是Web服務器
WEB即超文本(hypertext)、超媒體(hypermedia)和超文本傳輸協(xié)議(HTTP),獲取這些靜態(tài)資源實際上是在請求服務器上的文件。
這些文件都一直保存在服務器的磁盤上一個固定的文件路徑,并生成一個對應的地址。
HTML頁面就是WEB的數(shù)據(jù)元素,處理這些數(shù)據(jù)元素的應用軟件就叫WEB服務器,WEB服務器常與客戶端打交道,它要處理的主要信息有:session、request、response、HTML、JS、CS等。
常用的Web服務器
- Nginx
- Apache
- Jetty (也支持動態(tài)頁面處理,但主要還是靜態(tài)頁面)
- IIS
應用服務器簡介
什么是應用服務器
應用服務器是為客戶端提供對業(yè)務邏輯的訪問這種服務器,根據(jù)客戶端的請求會將數(shù)據(jù)轉化為動態(tài)內容,一般還需要數(shù)據(jù)庫的支持,應用服務器的搭建很多時候依賴于應用程序的開發(fā)語言,各種編程語言生態(tài)下對應不同的軟件, 比如使用Java語言開發(fā)的項目通常選擇 Tomcat或者接jboss來作為程序運行的應用服務器,而使用python語言開發(fā)Web應用,一般會選用Django等python框架下的軟件,來作為它的應用服務器。
常用的應用服務器
- Tomcat
- Jboss
- WebLogic
- 有的應用服務器也提供http服務,如Tomcat,所以可以說,Tomcat是Web服務器也是應用服務器。
Web服務器和應用服務器的區(qū)別及聯(lián)系
WEB服務器一般是通用的,而應用服務器一般是專用的,如Tomcat只處理JAVA應用程序而不能處理ASPX或PHP。
而Apache是一個WEB服務器(HTTP服務器),它的數(shù)據(jù)源可以是配置在Tomcat中的JAVA應用,也可以是ASPX應用。
Web服務器只負責處理HTTP協(xié)議,只能發(fā)送靜態(tài)頁面的內容。而JSP,ASP,PHP等動態(tài)內容需要通過CGI、FastCGI、ISAPI等接口交給其他程序去處理,這個其他程序就是應用服務器。
Web服務器只處理靜態(tài)html。走http協(xié)議??蛻舳藶闉g覽器。
應用服務器主要是控制客戶端和服務端的業(yè)務邏輯,通信格式不限制(如json、html或任何文件),也是走http協(xié)議。經(jīng)常用來處理動態(tài)內容??蛻舳丝梢允菫g覽器,也可以是其他應用服務器,手機app等。
Web服務器可以算是應用服務器的一個子集。
現(xiàn)在很多Web服務器通過加載插件也支持動態(tài)頁面的處理,應用服務器本身也支持靜態(tài)頁面的處理。
兩者有很多重合的地方,現(xiàn)在也有人叫Web應用服務器。隨著Web技術的火熱,兩者很多功能融合了,但是概念上還是有差異。
這里通過分析Nginx(Web服務器)和Tomcat(應用服務器)來展示二者之間的區(qū)別:
Tomcat的功能職責 :
Tomcat運行在JVM之上,它和HTTP服務器一樣,綁定IP地址并監(jiān)聽TCP端口,同時還包含以下指責:
管理Servlet程序的生命周期。
將URL映射到指定的Servlet進行處理。
與Servlet程序合作處理HTTP請求——根據(jù)HTTP請求生成HttpServletResponse對象并傳遞給Servlet進行處理,將Servlet中的HttpServletResponse對象生成的內容返回給瀏覽器。
Nginx的功能職責:
動靜態(tài)資源分離——運用Nginx的反向代理功能分發(fā)請求:所有動態(tài)資源的請求交給Tomcat,而靜態(tài)資源的請求(例如圖片、視頻、CSS、JavaScript文件等)則直接由Nginx返回到瀏覽器,這樣能大大減輕Tomcat的壓力。
負載均衡,當業(yè)務壓力增大時,可能一個Tomcat的實例不足以處理,那么這時可以啟動多個Tomcat實例進行水平擴展,而Nginx的負載均衡功能可以把請求通過算法分發(fā)到各個不同的實例進行處理。
兩者的區(qū)別:
Apache/Nginx叫做Http server ;而Tomcat 則是一個application Server,或者說是一個servlet/jsp應用容器(python無法直接運行在Tomcat上,java可以) 一個 HTTP Server 關心的是 HTTP 協(xié)議層面的傳輸和訪問控制,所以在 Apache/Nginx 上你可以看到代理、負載均衡等功能??蛻舳送ㄟ^ HTTP Server 訪問服務器上存儲的資源(HTML 文件、圖片文件等等)。
而應用服務器,則是一個應用執(zhí)行的容器。它首先需要支持開發(fā)語言的 Runtime(對于 Tomcat 來說,就是 Java),保證應用能夠在應用服務器上正常運行。
其次,需要支持應用相關的規(guī)范,例如類庫、安全方面的特性。對于 Tomcat 來說,就是需要提供 JSP/Sevlet 運行需要的標準類庫、Interface 等。為了方便,應用服務器往往也會集成 HTTP Server 的功能,但是不如專業(yè)的 HTTP Server 那么強大,所以應用服務器往往是運行在 HTTP Server 的背后,執(zhí)行應用,將動態(tài)的內容轉化為靜態(tài)的內容之后,通過 HTTP Server 分發(fā)到客戶端。
Web服務器與應用服務器的選擇
如果完全服務靜態(tài)頁面選擇Web服務器(如一個靜態(tài)博客網(wǎng)站)
如果有動態(tài)頁面處理可以選擇應用服務器,或者結合使用。大一點的網(wǎng)站推薦兩者都使用,前后端分離,靜態(tài)頁面交給Web服務器,業(yè)務邏輯使用應用服務器。(如一個網(wǎng)上購物系統(tǒng))
到此這篇關于Web服務器和應用服務器之間的區(qū)別詳解的文章就介紹到這了,更多相關Web服務器和應用服務器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一個SSL證書在線轉換工具以及IIS7環(huán)境下開通https的方法
公司只能提供 Nginx 下的 SSL 證書,卻要在 IIS 里面開啟 https 這個問題,那么就需要將pem轉換為pfx,這里為大家分享一下幾種方法2024-02-02

