IIS、Apache、Tomcat、Nginx、CDN,它們之間有何區別?

愛笑的潔寶


一個學習的總結,或者說是彙總,有些鏈接給出的觀點過時,已按照自己的理解經過修改編輯;

web服務器

Web服務器的基本功能就是提供Web信息瀏覽服務,響應客戶端的瀏覽器請求。因為Web服務器主要支持的協議就是HTTP,所以通常情況下HTTP服務器和WEB服務器是相等的。待考:支持除HTTP之外的協議的web服務器?

不支持事務處理或數據庫連接池,但它可以配置各種策略來實現容錯性和可擴展性,例如負載平衡,緩衝,集群。

IIS、Apache、Tomcat都可以屬於Web服務器。

IIS 是微軟開發的web服務器,需要收費,主要用來跑 asp.net asp php,只能在windows下運行。


Apache與Tomcat都是Apache開源組織開發的用於處理HTTP服務的項目,兩者都是免費的,都可以做為獨立的Web服務器運行。Apache是Web服務器而Tomcat是Java應用服務器。Apache服務器 只處理 靜態HTML,而tomcat服務器 靜態HTML 動態 JSP Servlet 都能處理。

一般是把 Apache服務器 與 tomcat服務器 搭配在一起用:

1) Apache服務器 負責處理所有 靜態的 頁面/圖片 等信息。

2) Tomcat 只處理動態的 部分。

Apache:是C語言實現的,專門用來提供HTTP服務。特性:簡單、速度快、性能穩定、可配置(代理)

1、主要用於解析靜態文本,併發性能高,側重於HTTP服務;

2、支持靜態頁(HTML),不支持動態請求如:CGI、Servlet/JSP、PHP、ASP等;3、具有很強的可擴展性,可以通過插件支持PHP,還可以單向Apache連接Tomcat實現連通;

4、Apache是世界使用排名第一的Web服務器。

Tomcat:是Java開發的一個符合JavaEE的Servlet規範的JSP服務器(Servlet容器),是 Apache 的擴展。特性:免費的Java應用服務器

1、主要用於解析JSP/Servlet,側重於Servlet引擎;

2、支持靜態頁,但效率沒有Apache高;支持Servlet、JSP請求;

3、Tomcat本身也內置了一個HTTP服務器用於支持靜態內容,可以通過Tomcat的配置管理工具實現與Apache整合。

Apache + Tomcat:兩者整合後優點:如果請深圳市是靜態網頁則由Apache處理,並將結果返回;如果是動態請求,Apache會將解析工作轉發給Tomcat處理,Tomcat處理後將結果通過Apache返回。這樣可以達到分工合作,實現負載遠衡,提高系統的性能。apache是web服務器,tomcat是應用(java)服務器,它只是一個servlet容器,可以認為是apache的擴展,但是可以獨立於apache運行。獨立於apache運行。換句話說,apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),而這個桶也可以不放在卡車上。

Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。

Nginx與Apache比較:

1)輕量級,同樣起web 服務,比apache佔用更少的內存及資源 ;

2)高併發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能 ;

3)高度模塊化的設計,編寫模塊相對簡單 ;

4)提供負載均衡;

5)apache是同步多進程模型,一個連接對應一個進程;nginx是異步的,多個連接(萬級別)可以對應一個進程;

歸納起來,CDN具有以下主要功能:
(1)節省骨幹網帶寬,減少帶寬需求量;
(2)提供服務器端加速,解決由於用戶訪問量大造成的服務器過載問題;
(3)服務商能使用Web Cache技術在本地緩存用戶訪問過的Web頁面和對象,實現相同對象的訪問無須佔用主幹的出口帶寬,並提高用戶訪問因特網頁面的相應時間的需求;
(4)能克服網站分佈不均的問題,並且能降低網站自身建設和維護成本;
(5)降低“通信風暴”的影響,提高網絡訪問的穩定性。

Echa攻城獅


您的提問,有我回答,我是IT屠工!

IIS

IIS是互聯網信息服務,是由微軟公司提供的基於運行Microsoft Windows的互聯網基本服務。

IIS是一種Web(網頁)服務組件,其中包括Web服務器、FTP服務器、NNTP服務器和SMTP服務器,分別用於網頁瀏覽、文件傳輸、新聞服務和郵件發送等方面,它使得在網絡(包括互聯網和局域網)上發佈信息成了一件很容易的事。

IIS是企業識別體系重要的有機組成部分,是互聯網時代企業必須關注的並進行有效管理的領域。是企業在互聯網上的名片,能讓企業更好的擁抱互聯網時代。

IIS的功能

IIS是一個World Wide Web server。Gopher server和FTP server全部包容在裡面。 IIS支持一些有趣的東西,像有編輯環境的界面(FRONTPAGE)、有全文檢索功能的(INDEX SERVER)、有多媒體功能的(NET SHOW)。

其次,IIS是隨Windows NT Server 4.0一起提供的文件和應用程序服務器,是在Windows NT Server上建立Internet服務器的基本組件。它與Windows NT Server完全集成,允許使用Windows NT Server內置的安全性以及NTFS文件系統建立強大靈活的Internet/Intranet站點。

Apache

Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網頁服務器,可以在大多數計算機操作系統中運行,由於其多平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。

Apache HTTP服務器是一個模塊化的服務器,源於NCSAhttpd服務器,經過多次修改,成為世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上。

Apacheweb服務器軟件主要功能:

1.支持最新的HTTP/1.1通信協議

2.擁有簡單而強有力的基於文件的配置過程

3.支持通用網關接口

4.支持基於IP和基於域名的虛擬主機

5.支持多種方式的HTTP認證

6.集成Perl處理模塊

7.集成代理服務器模塊

8.支持實時監視服務器狀態和定製服務器日誌

9.支持服務器端包含指令(SSI)

10.支持安全Socket層(SSL)

11.提供用戶會話過程的跟蹤

12.支持FastCGI

13.通過第三方模塊可以支持JavaServlets

Tomcat

Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支持,最新的Servlet 和JSP 規範總是能在Tomcat 中得到體現,因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。

當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。

Nginx

Nginx 是一款自由的、開源的、高性能的 HTTP 服務器和反向代理服務器;同時也是一個 IMAP、POP3、SMTP 代理服務器。

Nginx 可以作為一個 HTTP 服務器進行網站的發佈處理,另外 Nginx 可以作為反向代理進行負載均衡的實現。

Nginx 使用基於事件驅動架構,使得其可以支持數以百萬級別的 TCP 連接。高度的模塊化和自由軟件許可證使得第三方模塊層出不窮(這是個開源的時代啊)。Nginx 是一個跨平臺服務器,可以運行在 Linux、Windows、FreeBSD、Solaris、AIX、Mac OS 等操作系統上。這些優秀的設計帶來的極大的穩定性。

CDN

CDN的全稱是Content Delivery Network,即內容分發網絡。CDN是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發技術。

CDN網絡中包含的功能實體包括內容緩存設備、內容交換機、內容路由器、CDN內容管理系統等組成。

CDN具有以下主要功能:

1.節省骨幹網帶寬,減少帶寬需求量;

2.提供服務器端加速,解決由於用戶訪問量大造成的服務器過載問題;

3.服務商能使用Web Cache技術在本地緩存用戶訪問過的Web頁面和對象,實現相同對象的訪問無須佔用主幹的出口帶寬,並提高用戶訪問因特網頁面的相應時間的需求;

4.能克服網站分佈不均的問題,並且能降低網站自身建設和維護成本;

5.降低“通信風暴”的影響,提高網絡訪問的穩定性。

以上是我的回答,希望可以幫助到您!


IT屠工


關注Web前端進階指南,學習前端,體驗科技產品帶來的極致體驗,分享最實用的科技小技巧,解答您的疑惑。

Web Server中文名稱叫網頁服務器或web服務器。WEB服務器也稱為WWW(WORLD WIDE WEB)服務器,主要功能是提供網上信息瀏覽服務

IIS

IIS是微軟公司的Web服務器。主要支持ASP語言環境,對於中小企業來說建立自己的網站,對外展示自己的頁面是最平常不過的事情了。目前最流行的建立WWW服務工具就要屬Apache與IIS了。IIS只能在微軟公司的windows操作系統下使用,離開了windows他將一事無成。無法移植到其他類型的操作系統中。

Tomcat

java裡面一個web容器,就是一個http請求來了,它幫你接受,可能再對請求做些處理,然後拉起你controller的代碼,把請求傳進去,最後當controller處理結束後,再把請求簡單處理一下返回給請求者。

Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。

CDN

中文叫內容分發網絡,都是雲服務商在運營,它可以讓你的用戶在訪問資源的時候就近訪問,提高靜態資源的訪問速度。

這些都是不同的東西,不過都是概念上的,功能上有一定的重疊,不過在使用中基本都是不同的東西。

一般生產上iis,nginx,apache都是當反向代理用,少數情況會當靜態文件服務器用。tomcat,無論何時都是web容器。cdn一般只在生產上用,主要是提供靜態文件服務。

至於他們的實現,理論上講用什麼語言否沒問題,不管是java node還是啥的,不過有現成的,應該沒人會造新的。

Apache

Apache是一個web服務器環境程序 啟用他可以作為web服務器使用 不過只支持靜態網頁. 但asp,php,cgi,jsp等動態網頁的就不行. 如果要在APACHE環境下運行jsp 的話就需要一個解釋器來執行jsp網頁, 而這個jsp解釋器就是TOMCAT, 為什麼還要JDK呢?因為jsp需要連接數據庫的話就要jdk來提供連接數據庫的驅程,所以要運行jsp的web服務器平臺就需要APACHE+TOMCAT+JDK 整合的好處是:如果客戶端請求的是靜態頁面,則只需要Apache服務器響應請求如果客戶端請求動態頁面,則是Tomcat服務器響應請求因為jsp是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷。

apache是web服務器,tomcat是應用(java)服務器,它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴展。

Apache:普通服務器,本身只支持html即普通網頁,它是html容器,功能像IIS一樣

tomcat:解釋java程序(jsp,serverlet),它是是jsp/servlet容器,用於發佈JSP及JAVA的

apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),tomcat就是一個桶(裝像JAVA這樣的水),而這個桶也可以不放在卡車上。

訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本為9.0。

Nginx

Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。

nginx相對於apache的優點

輕量級,同樣起web 服務,比apache佔用更少的內存及資源

抗併發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能

高度模塊化的設計,編寫模塊相對簡單

提供負載均衡

社區活躍,各種高性能模塊出品迅速

總結

Nginx優點:負載均衡、反向代理、處理靜態文件優勢。nginx處理靜態請求的速度高於Apache優點:相對於Tomcat服務器來說處理靜態文件是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片等。

Tomcat:動態解析容器,處理動態請求,是編譯JSP\\Servlet的容器,Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到後臺交由Tomcat進行處理。

Apache在處理動態有優勢,Nginx併發性比較好,CPU內存佔用低,如果rewrite頻繁,那還是Apache較適合。

反向代理的理解:

反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,

並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。


Web前端進階指南


iis apache nginx屬於一類,都是web服務,本身提供靜態文件訪問功能,同時又可以通過擴展接入其他語言的解析。tomcat是針對java類的web服務容器。可以這樣理解iis apache nginx是阿里,tomcat是京東。而cdn只是一種服務的統稱,用到的web服務器則可能不同,有用nginx實現cdn的,也有自研的。

這類再簡單介紹一下,iis主要針對微軟系的語言。當然也支持php等。但是主要用於微軟系。

apache主要以擴展方式運行,比如php,如果想在apache裡運行,你得給apache寫個擴展,這樣才可以跑php,也就是耦合度比較高。

nginx以性能聞名。運行web主要靠反向代理和協議。這樣其他語言只需要按照協議通訊即可無需開發nginx擴展。耦合度低。


萬能擼Sir


除了cdn其他都是web服務器,cdn是做網絡分發的


分享到:


相關文章: