Tomcat 、Nginx 、Apache 的區別? 各自的優點是什麼? 什麼場景下用合適?
主要是看看應聘人員對常用web 容器是否熟悉,常用的web 容器基本上也就幾個(這裡指的是linux下常用的Web 容器,當然還有windows 下的IIS 以及 商業的WAS),應聘人員需要簡單的回答出三者的區別、大致的應用場景 以及各自的優勢。
也可以讓應聘人員簡單地畫出上家公司維護的一個業務拓撲(如果涉及到商業機密,就跳過...),讓他從業務的層面講解下對這套架構的理解(優缺點、高可用如何實現的?是否存在系統瓶頸等),如果這套架構是由他自己搭建的,那他一定會非常熟悉,而且也可以測試下他的表達能力
Apache
Apache HTTP伺服器是一個模塊化的伺服器,可以運行在幾乎所有廣泛使用的計算機平台上。其屬於應用伺服器。Apache支持支持模塊多,性能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴展腳本、模塊等支持動態頁面等。
Apache相對於Tomcat的優點:
伺服器來說處理靜態文件是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片等。
Apache 相對於 Nginx 的優點:
apache的 rewrite 比nginx 的強大;支持動態頁面;支持的模塊多,基本涵蓋所有應用;性能穩定。
缺點:配置相對複雜,自身不支持動態頁面。
Tomcat:
Tomcat是應用(Java)伺服器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴展,但是可以獨立於Apache運行。
缺點:可以說Tomcat 只能用做java伺服器
優點:動態解析容器,處理動態請求,是編譯JSP/Servlet的容器。
Nginx
Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,Nginx,它的發音為「engine X」,是一個高性能的HTTP和反向代理伺服器,同時也是一個IMAP/POP3/SMTP 代理伺服器。
nginx相對於apache的優點:
輕量級,同樣起web服務,比apache占用更少的內存及資源;抗並發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高並發下nginx 能保持低資源低消耗高性能;高度模塊化的設計,編寫模塊相對簡單;提供負載均衡
缺點:Nginx 只適合靜態和反向代理。
應用場景:
三者之間的區別:
1)Nginx和tomcat的區別
nginx常用做靜態內容服務和代理伺服器,直接外來請求轉發給後面的應用伺服器(tomcat,Django等),tomcat更多用來做一個應用容器,讓java web app泡在裡面的東西。
注意:nginx只是把請求做了分發,不做處理!!!
2)nginx和Apache的區別
Apache是同步多進程模型,一個連接對應一個進程,而nginx是異步的,多個連接(萬級別)可以對應一個進程。
Nginx輕量級,抗並發,處理靜態文件好Apache超穩定,對PHP支持比較檢單,nginx需要配合其他後端用,處理動態請求有優勢,建議使用前端nginx抗並發,後端apache集群,配合起來。
應用場景分析:
Tomcat結合Apache、Nginx實現高性能的web伺服器
Tomcat雖然是一個servlet和jsp容器,但是它也是一個輕量級的web伺服器。它既可以處理動態內容,也可以處理靜態內容。但是,tomcat的最大優勢在於處理動態請求,處理靜態內容的能力不如apache和nginx,我們可以利用nginx的高並發,低消耗的特點與tomcat一起使用。
通常情況下,tomcat與nginx、Apache結合使用,nginx、apache既可以提供web服務,也可以轉發動態請求至tomcat伺服器上。通常nginx、apache只提供代理的功能,也就是轉發請求至tomcat伺服器上,而對於靜態內容的響應,則由前端負載均衡器來轉發至專門的靜態伺服器上進行處理。其架構類似於如下圖:
網站崩潰找不到原因?平台搭建無從下手?熱門技術不想落伍?想要變強找不到資料?
加入[IT拯救聯盟],讓大牛和同伴拯救你,帶你裝x帶你飛。群里有定期乾貨分享、大牛專業解答、實用IT工具優選.....
私信小編「聯盟」,即可加入我們~