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:動態解析容器,處理動態請求,是編譯JSPServlet的容器,Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到后臺交由Tomcat進行處理。
Apache在處理動態有優勢,Nginx并發性比較好,CPU內存占用低,如果rewrite頻繁,那還是Apache較適合。
反向代理的理解:
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,
并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。