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