您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關服務器Apache與Tomcat和Nginx的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
1 問題
公司服務器用的Apache,后臺是php語言,然后服務端用的linux C/C++,會經常聽到Apache服務器,然后之前實習的公司服務端用的java,然后依稀記得使用了nginx反向代理服務器和tomcat,請求先經過nginx然后再去通過tomcat轉發請求,然后對Apache服務器和tomcat和nginx理解就有點模糊了,然后今天查閱相關資料對使用場景和進行對比
2 Apache、Tomcat 、Nginx名詞解釋
1 ) Apache
Apache HTTP服務器是一個模塊化的服務器,可以運行在幾乎所有廣泛使用的計算機平臺上,Linux、Unix、Windows等,屬于應用服務器。
Apache支持模塊多,性能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,比如我之前用過freemarker,也是靜態的,但可以通過擴展腳本、模塊等支持動態頁面等。
Apache可以支持PHP、cgi、perl,但是要使用Java的話,你需要Tomcat在Apache后臺支撐,將Java請求由Apache轉發給Tomcat處理.
缺點:配置相對復雜,自身不支持動態頁面,需要插件擴展來輔助支持動態頁面解析,如FastCGI、Tomcat,搞j2ee的小伙伴知道我們動態頁面需要使用到jsp,所以我們是需要Tomcat來解析動態頁面的,Tomcat就是servlet容器,當然它可以獨立于Apache,直接把tomcat作為服務器
2 ) Tomcat
Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴展,但是可以獨立于Apache運行,也就是說沒有Apache,只有Tomcat也可以解析靜態頁面和動態頁面(jsp),
3 ) Nginx
Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。
3 對比
1) Apache 與 Tomcat 比較
相同點:
都是Apache組織開發的,都有HTTP服務的功能,兩者都是開源、免費的。
不同點:
a) Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等),而Tomcat是Apache組織在符合Java EE的JSP、Servlet標準下開發的一個JSP服務器
b) Apache是一個Web服務器環境程序,啟用他可以作為Web服務器使用,不過只支持靜態網頁如ASP、PHP,Freemarker,你要搞java服務端用到動態語言比如jsp,就需要Tomcat這個解釋器,用來解析jsp,Apache是不能解析的,切記。
c) Apache 側重于HTTP Server,Tomcat 側重于Servlet容器,支持JSP,但對靜態網頁不太理想,也就是說Apache和Tomcat這個2個服務器,Apache對靜態文件處理能力強于Tomcat,Tomcat實用于解析動態語言(jsp),我們可以用Apache處理靜文件,用Tomcat處理動態文件
d) Apache是Web服務器,Tomcat是應用(Java)服務器,可以認為是Apache的擴展,但是可以獨立于Apache運行
實際使用:
Apache+Tomcat(如果是java服務端)
戶端請求的是靜態頁面,則只需要Apache服務器響應請求。
客戶端請求動態頁面,則是Tomcat服務器響應請求,JSP是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷。
可以理解 Tomcat為Apache的一種擴展。
2)Nginx 與 Apache 比較
1 Nginx 優點
a)輕量級,同樣是web 服務,比apache占用更少的內存及資源 。
b)抗并發,nginx 處理請求是異步非阻塞的,多個連接(萬級別)可以對應一個進程,而apache 則是同步阻塞型的,同步多進程模型,一個連接對應一個進程
c)高度模塊化的設計,編寫模塊相對簡單。
d)提供負載均衡
e)配置簡潔
f ) Nginx 靜態處理性能比 Apache 高 3倍以上
e ) nginx只適合靜態和反向代理
反向代理的理解:
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器處理,其本身并不做處理,
并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個web服務器,實際只做了轉發,沒有做處理。
2 Apache 優點
a)apache的 rewrite 比nginx 的強大。
b)支持動態頁面。
c)支持的模塊多,基本涵蓋所有應用。
d)性能穩定。
e ) Apache 對 PHP 支持比較簡單
f ) 相比nginx,動態請求由apache去做比較好。
3)Nginx 與 Tomcat 比較
我們知道Nginx一般處理靜態處理能力很強,但是不能解析動態語言比如(jsp)我們,還需要Tomcat進行解釋jsp,所以動態處理我們一般使用Tomcat,靜態處理使用Nginx,我之前實習的公司網站就是Nginx+Tomcat組合使用,Nginx起到反向代理的作用,如果是靜態處理通過Nginx處理,動態請求才到后臺Tomcat進行處理,這也就是Nginx的動態分離機制,我之前還不是太理解,現在終于理解為什么要這么搭配了,說到底就是Nginx的靜態處理能力比Tomcat強,所以我們需要請求先經過Nginx,這里就不需要用到Apache服務器。
4 小結
a ) 靜態處理能力:
Nginx(至少是Apache3倍)>Apache>Tomcat
b)Nginx優點:負載均衡、反向代理、處理靜態文件優勢,這也就是為啥java服務器Tomcat前面先要經過Nginx服務器處理一波,(只轉發請求,不做其他操作,可以看下上面的反向代理的解釋),Nginx并發性比較好,CPU內存占用低
c)Apache優點:相對于Tomcat服務器來說處理靜態文件是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片,當然讀寫能力比較強,如果rewrite頻繁,那還是Apache較適合,比較穩定,處理動態有優勢。前提是沒有Tomcat,也就是說不是java服務端。
d)Tomcat:動態解析容器,處理動態請求,是編譯JSP、Servlet的容器,Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到后臺交由Tomcat進行處理。
感謝各位的閱讀!關于“服務器Apache與Tomcat和Nginx的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。