服務(wù)器Apache與Tomcat和Nginx的理解和對(duì)比分析詳解
1 問(wèn)題
公司服務(wù)器用的Apache,后臺(tái)是php語(yǔ)言,然后服務(wù)端用的linux C/C++,會(huì)經(jīng)常聽(tīng)到Apache服務(wù)器,然后之前實(shí)習(xí)的公司服務(wù)端用的java,然后依稀記得使用了nginx反向代理服務(wù)器和tomcat,請(qǐng)求先經(jīng)過(guò)nginx然后再去通過(guò)tomcat轉(zhuǎn)發(fā)請(qǐng)求,然后對(duì)Apache服務(wù)器和tomcat和nginx理解就有點(diǎn)模糊了,然后今天查閱相關(guān)資料對(duì)使用場(chǎng)景和進(jìn)行對(duì)比
2 Apache、Tomcat 、Nginx名詞解釋
1 ) Apache
Apache HTTP服務(wù)器是一個(gè)模塊化的服務(wù)器,可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上,Linux、Unix、Windows等,屬于應(yīng)用服務(wù)器。
Apache支持模塊多,性能穩(wěn)定,Apache本身是靜態(tài)解析,適合靜態(tài)HTML、圖片等,比如我之前用過(guò)freemarker,也是靜態(tài)的,但可以通過(guò)擴(kuò)展腳本、模塊等支持動(dòng)態(tài)頁(yè)面等。
Apache可以支持PHP、cgi、perl,但是要使用Java的話,你需要Tomcat在Apache后臺(tái)支撐,將Java請(qǐng)求由Apache轉(zhuǎn)發(fā)給Tomcat處理.
缺點(diǎn):配置相對(duì)復(fù)雜,自身不支持動(dòng)態(tài)頁(yè)面,需要插件擴(kuò)展來(lái)輔助支持動(dòng)態(tài)頁(yè)面解析,如FastCGI、Tomcat,搞j2ee的小伙伴知道我們動(dòng)態(tài)頁(yè)面需要使用到j(luò)sp,所以我們是需要Tomcat來(lái)解析動(dòng)態(tài)頁(yè)面的,Tomcat就是servlet容器,當(dāng)然它可以獨(dú)立于Apache,直接把tomcat作為服務(wù)器
2 ) Tomcat
Tomcat是應(yīng)用(Java)服務(wù)器,它只是一個(gè)Servlet(JSP也翻譯成Servlet)容器,可以認(rèn)為是Apache的擴(kuò)展,但是可以獨(dú)立于Apache運(yùn)行,也就是說(shuō)沒(méi)有Apache,只有Tomcat也可以解析靜態(tài)頁(yè)面和動(dòng)態(tài)頁(yè)面(jsp),
3 ) Nginx
Nginx是俄羅斯人編寫(xiě)的十分輕量級(jí)的HTTP服務(wù)器,是一個(gè)高性能的HTTP和反向代理服務(wù)器,同時(shí)也是一個(gè)IMAP/POP3/SMTP 代理服務(wù)器。
3 對(duì)比
1) Apache 與 Tomcat 比較
相同點(diǎn):
都是Apache組織開(kāi)發(fā)的,都有HTTP服務(wù)的功能,兩者都是開(kāi)源、免費(fèi)的。
不同點(diǎn):
a) Apache是專門(mén)用了提供HTTP服務(wù)的,以及相關(guān)配置的(例如虛擬主機(jī)、URL轉(zhuǎn)發(fā)等等),而Tomcat是Apache組織在符合Java EE的JSP、Servlet標(biāo)準(zhǔn)下開(kāi)發(fā)的一個(gè)JSP服務(wù)器
b) Apache是一個(gè)Web服務(wù)器環(huán)境程序,啟用他可以作為Web服務(wù)器使用,不過(guò)只支持靜態(tài)網(wǎng)頁(yè)如ASP、PHP,F(xiàn)reemarker,你要搞java服務(wù)端用到動(dòng)態(tài)語(yǔ)言比如jsp,就需要Tomcat這個(gè)解釋器,用來(lái)解析jsp,Apache是不能解析的,切記。
c) Apache 側(cè)重于HTTP Server,Tomcat 側(cè)重于Servlet容器,支持JSP,但對(duì)靜態(tài)網(wǎng)頁(yè)不太理想,也就是說(shuō)Apache和Tomcat這個(gè)2個(gè)服務(wù)器,Apache對(duì)靜態(tài)文件處理能力強(qiáng)于Tomcat,Tomcat實(shí)用于解析動(dòng)態(tài)語(yǔ)言(jsp),我們可以用Apache處理靜文件,用Tomcat處理動(dòng)態(tài)文件
d) Apache是Web服務(wù)器,Tomcat是應(yīng)用(Java)服務(wù)器,可以認(rèn)為是Apache的擴(kuò)展,但是可以獨(dú)立于Apache運(yùn)行
實(shí)際使用:
Apache+Tomcat(如果是java服務(wù)端)
戶端請(qǐng)求的是靜態(tài)頁(yè)面,則只需要Apache服務(wù)器響應(yīng)請(qǐng)求。
客戶端請(qǐng)求動(dòng)態(tài)頁(yè)面,則是Tomcat服務(wù)器響應(yīng)請(qǐng)求,JSP是服務(wù)器端解釋代碼的,這樣整合就可以減少Tomcat的服務(wù)開(kāi)銷。
可以理解 Tomcat為Apache的一種擴(kuò)展。
2)Nginx 與 Apache 比較
1 Nginx 優(yōu)點(diǎn)
a)輕量級(jí),同樣是web 服務(wù),比apache占用更少的內(nèi)存及資源 。
b)抗并發(fā),nginx 處理請(qǐng)求是異步非阻塞的,多個(gè)連接(萬(wàn)級(jí)別)可以對(duì)應(yīng)一個(gè)進(jìn)程,而apache 則是同步阻塞型的,同步多進(jìn)程模型,一個(gè)連接對(duì)應(yīng)一個(gè)進(jìn)程
c)高度模塊化的設(shè)計(jì),編寫(xiě)模塊相對(duì)簡(jiǎn)單。
d)提供負(fù)載均衡
e)配置簡(jiǎn)潔
f ) Nginx 靜態(tài)處理性能比 Apache 高 3倍以上
e ) nginx只適合靜態(tài)和反向代理
反向代理的理解:
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器處理,其本身并不做處理,
并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)web服務(wù)器,實(shí)際只做了轉(zhuǎn)發(fā),沒(méi)有做處理。
2 Apache 優(yōu)點(diǎn)
a)apache的 rewrite 比nginx 的強(qiáng)大。
b)支持動(dòng)態(tài)頁(yè)面。
c)支持的模塊多,基本涵蓋所有應(yīng)用。
d)性能穩(wěn)定。
e ) Apache 對(duì) PHP 支持比較簡(jiǎn)單
f ) 相比nginx,動(dòng)態(tài)請(qǐng)求由apache去做比較好。
3)Nginx 與 Tomcat 比較
我們知道Nginx一般處理靜態(tài)處理能力很強(qiáng),但是不能解析動(dòng)態(tài)語(yǔ)言比如(jsp)我們,還需要Tomcat進(jìn)行解釋jsp,所以動(dòng)態(tài)處理我們一般使用Tomcat,靜態(tài)處理使用Nginx,我之前實(shí)習(xí)的公司網(wǎng)站就是Nginx+Tomcat組合使用,Nginx起到反向代理的作用,如果是靜態(tài)處理通過(guò)Nginx處理,動(dòng)態(tài)請(qǐng)求才到后臺(tái)Tomcat進(jìn)行處理,這也就是Nginx的動(dòng)態(tài)分離機(jī)制,我之前還不是太理解,現(xiàn)在終于理解為什么要這么搭配了,說(shuō)到底就是Nginx的靜態(tài)處理能力比Tomcat強(qiáng),所以我們需要請(qǐng)求先經(jīng)過(guò)Nginx,這里就不需要用到Apache服務(wù)器。
4 小結(jié)
a ) 靜態(tài)處理能力:
Nginx(至少是Apache3倍)>Apache>Tomcat
b)Nginx優(yōu)點(diǎn):負(fù)載均衡、反向代理、處理靜態(tài)文件優(yōu)勢(shì),這也就是為啥java服務(wù)器Tomcat前面先要經(jīng)過(guò)Nginx服務(wù)器處理一波,(只轉(zhuǎn)發(fā)請(qǐng)求,不做其他操作,可以看下上面的反向代理的解釋),Nginx并發(fā)性比較好,CPU內(nèi)存占用低
c)Apache優(yōu)點(diǎn):相對(duì)于Tomcat服務(wù)器來(lái)說(shuō)處理靜態(tài)文件是它的優(yōu)勢(shì),速度快。Apache是靜態(tài)解析,適合靜態(tài)HTML、圖片,當(dāng)然讀寫(xiě)能力比較強(qiáng),如果rewrite頻繁,那還是Apache較適合,比較穩(wěn)定,處理動(dòng)態(tài)有優(yōu)勢(shì)。前提是沒(méi)有Tomcat,也就是說(shuō)不是java服務(wù)端。
d)Tomcat:動(dòng)態(tài)解析容器,處理動(dòng)態(tài)請(qǐng)求,是編譯JSP、Servlet的容器,Nginx有動(dòng)態(tài)分離機(jī)制,靜態(tài)請(qǐng)求直接就可以通過(guò)Nginx處理,動(dòng)態(tài)請(qǐng)求才轉(zhuǎn)發(fā)請(qǐng)求到后臺(tái)交由Tomcat進(jìn)行處理。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
阿里云主機(jī)不能用IP訪問(wèn)網(wǎng)站的解決方法(配置安全組規(guī)則搞定)
剛買了一臺(tái)阿里云主機(jī),迫不待及的試試速度,怎知網(wǎng)站訪問(wèn)不了,用IP或綁定域名都無(wú)法訪問(wèn),后來(lái)提交工單才知道,需要配置安全組規(guī)則才行。針對(duì)同樣像我一樣的新手,本文就介紹一下如何在開(kāi)通阿里云主機(jī)后配置安全組規(guī)則,讓網(wǎng)站能夠外網(wǎng)訪問(wèn),需要的朋友可以參考下2020-07-07kubernetes使用kubeadm創(chuàng)建集群實(shí)操教程(全)
安裝kubernetes的方式,分別是kubeadm引導(dǎo)集群、kOps、Kubespray,本文采用kubeadm引導(dǎo)集群的方式,主要運(yùn)用了安裝kubeadm、對(duì)kubeadm進(jìn)行故障排查、使用kubeadm創(chuàng)建集群,目標(biāo)是要安裝單個(gè)控制平面的Kubernetes集群,在集群上安裝Pod網(wǎng)絡(luò),以便Pod可以相互連通2024-06-06服務(wù)器重啟不能啟動(dòng)的幾種常見(jiàn)的解決方法
服務(wù)器重啟不能啟動(dòng)的幾種常見(jiàn)的解決方法,碰到此問(wèn)題的朋友可以參考下。2011-04-04解決JMail無(wú)法安裝的方法(帳戶名與安全標(biāo)識(shí)間無(wú)任何映射完成)
今日在遠(yuǎn)程服務(wù)器上安裝Jmail,結(jié)果提示錯(cuò)誤“帳戶名與安全標(biāo)識(shí)間無(wú)任何映射完成”2010-04-04如何通過(guò)Apache Bench實(shí)現(xiàn)web壓力測(cè)試
這篇文章主要介紹了如何通過(guò)Apache Bench實(shí)現(xiàn)web壓力測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Centos實(shí)現(xiàn)服務(wù)器時(shí)間同步的教程詳解
這篇文章主要為大家詳細(xì)介紹了Centos實(shí)現(xiàn)服務(wù)器時(shí)間同步的相關(guān)教程,文中通過(guò)圖片進(jìn)行了詳細(xì)的講解,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08基于HTTP協(xié)議實(shí)現(xiàn)的小型web服務(wù)器的方法
這篇文章主要介紹了基于HTTP協(xié)議實(shí)現(xiàn)的小型web服務(wù)器的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2007-08-08502 bad gateway是什么意思 502 bad gatewa
簡(jiǎn)單來(lái)說(shuō) 502 是報(bào)錯(cuò)類型代碼 bad getway 錯(cuò)誤的網(wǎng)關(guān),連接超時(shí) 我們向服務(wù)器器發(fā)送請(qǐng)求 由于服務(wù)器當(dāng)前鏈接太多,導(dǎo)致服務(wù)器方面無(wú)法給于正常的響應(yīng),產(chǎn)生此類報(bào)錯(cuò)2013-03-03php.ini 啟用disable_functions提高安全
如果想保證服務(wù)器的安全,請(qǐng)將這個(gè)函數(shù)加到disable_functions里或者將安全模式打開(kāi)吧,在安全模式下dl函數(shù)是無(wú)條件禁止的2009-07-07