作為一個運維的學(xué)習(xí)者,,對nginx和apache了解的很淺,,但是作為以后運維過程中非常重要的兩款服務(wù)器軟件,靜態(tài)web服務(wù)提供者,,還是相當(dāng)有必要深入的了解一下他們倆個的區(qū)別,。 那么,我開始嘗試從幾個方面來分析他們的區(qū)別之處,。所有的觀點都為本人持有,,一家之言而已。 生存環(huán)境(操作系統(tǒng)),、不同的地域的使用情況,、存在或者一般使用者的規(guī)模、主要作用,、源代碼情況(如果有時間的話),、使用親民度、對php等的支持。 下面開始我的菜鳥學(xué)習(xí)之路 一,、生存環(huán)境各類種子的發(fā)育離不開肥沃的土壤,同樣,,談到應(yīng)用程序,,我們不得不提到的就是操作系統(tǒng)環(huán)境,畢竟不同系統(tǒng)對他們的影響還是不小的 apache 這個老牌了,,在幾乎任何系統(tǒng)下都有對應(yīng)的支持,,無論時Windows還是Linux還是其他系統(tǒng),都有支持 它的官網(wǎng):http://httpd./ 截至目前,,最新版本是2.4.20,,可見官網(wǎng)下載可以直接獲得Win以及NetWare的二進(jìn)制安裝包,而Linux需要自行編譯使用(當(dāng)然使用源最好) nginx也一樣,,官網(wǎng)http://www./,,又卡又慢,給人一種很不好的印象(httpd也不快),,截至目前,,最新版為1.10.0。 進(jìn)入下載頁面,,可以發(fā)現(xiàn),,nginx只提供Linux相關(guān)源碼和Windows版本,沒有其他的支持,,搜索一番,,Windows下Nginx的相關(guān)信息寥寥無幾 所以總結(jié)說Windows下Apache占用率使用率是霸主地位的,Linux兩者尚不知曉 順便借鑒一下前人的經(jīng)驗,,各種測試各種評測,,很明確的OS區(qū)別就是, 二,、使用地域實話說我并不知道中國與外國在服務(wù)器使用上有何區(qū)別,由于我的夢想是在中國當(dāng)運維,,所以外國怎么樣對我也不重要,。 聽說中國的運維技術(shù),遠(yuǎn)超過外國普通公司(淘寶在線人數(shù)峰值),,所以或許關(guān)注中國是對的,。。,。 2015年中旬左右的服務(wù)器市場占有率,,可以看到,nginx對比apache還是要低上不少的。至于微軟的為啥那么多,?呵呵,,不是所有開網(wǎng)站的都會用Linux的。,。,。 老牌apache還是占有了大部分市場,我們可以通過隨便看看各種網(wǎng)站,,看他們提供Web服務(wù)的時候,,使用的都是什么服務(wù)器
使用的是apache
使用的是Unix下的apache(不愧是學(xué)校,就是有錢)
很多網(wǎng)站在出現(xiàn)404時,,下端就是一個nginx,,懶得列出來了,隨便在網(wǎng)址后面加點東西就出來了,。 可以看到,,兩者在單服務(wù)器情況下似乎是apache更多一些的。 三,、規(guī)模和功能把兩個結(jié)合到一起說了,,因為我發(fā)現(xiàn)他們兩個的存在是不沖突的。 Nginx除了靜態(tài)頁面服務(wù)以外,,反向代理負(fù)載均衡功能也是為人所稱道,,上萬的并發(fā)訪問一肩挑,堪稱性能之王,。 apache出道多年,,無與倫比的穩(wěn)定性,廣為人周知,,配置簡單,,后端結(jié)合緊密,性能可以接受,,很快成為了Web服務(wù)的主流,。 嗯,這是我從必應(yīng)搜來的博客,,我分析做出的總結(jié),。nginx性能,apache穩(wěn)定,,很多人的共識,,我也不知道到底對不對 一般來說,一個服務(wù)器集群,,Web服務(wù)提供集群,,是nginx前面抗壓力+負(fù)載均衡,,后面apache提供真正的網(wǎng)頁服務(wù)的,所以,,兩個哥們可以說是缺一不可,。 前面的使用率抽查就已經(jīng)看出了一個問題,更多網(wǎng)站以apache當(dāng)做Web服務(wù)提供者,,可能架構(gòu)就是我上面所說的那種nginx反向代理,,然后apache提供網(wǎng)頁內(nèi)容的樣子,由于學(xué)識,、認(rèn)知的匱乏,我不能看出網(wǎng)站到底使用的樣子的什么架構(gòu),,也不能看出他們到底是不是nginx當(dāng)做的負(fù)載均衡調(diào)度,。這個問題暫時就無解了。 于是,,通過在群里的聊天,,偶爾翻看網(wǎng)友的博文,參考馬幫同學(xué)們給出的他們的結(jié)構(gòu)圖,,絕大部分都是符合我的猜測的,。 就是這樣,至于為什么大眾化的網(wǎng)站(尤其是簡單網(wǎng)站)不愿意把nginx當(dāng)做直接的Web提供者,,有待觀察,。 四、與php的交互,,使用親民度恩,,這個問題,我感覺就回答了上一個模塊提出的疑問:為啥大眾化的東西,,更愿意用apache呢,? 我對答案的形容,和我猜測的答案本身,,是同一個詞:簡單,。 沒錯,我的猜測就是,,簡單粗暴,,導(dǎo)致了這樣的情況出現(xiàn)。 也許我們會考慮到某些網(wǎng)上流傳的說法,,例如:nginx的rewrite功能不如apache強大啦,,nginx的bug很多啦,什么什么的,。要我說,,無稽之談,,強行借口而已。 不夠強大,,那說明它本身也是有,,只不過相對而言略顯單薄(雖然是否真的單薄都不知道)而已,,對于大眾化的網(wǎng)站來說,,足夠了。 Bug多,,這個我是真心不認(rèn)同,,nginx搜索結(jié)果,可以說是好評如潮,,大家都對這個可靠又輕量化的軟件極盡夸耀之能事,,nginx的commuity討論頁面,大家反饋的錯誤也多半是自己不會配置的結(jié)果,。 況且,,intel、索尼PSN官網(wǎng),、某人氣論壇等,,這類的網(wǎng)站尚且在使用nginx當(dāng)做Web服務(wù)器,如果BUG真的多,,難道他們身經(jīng)百戰(zhàn)的運維大師會不知道,?還有,只是當(dāng)做一個普通的網(wǎng)站而已,,又不是99.999%的高可用,,想那么多不累嗎? 當(dāng)然,,一切都是我妄加揣測而已,,或許是我在表達(dá)著一堆狂妄無知的言論,哈哈~ 所以說,,這個問題就很簡單了,,nginx不是不行,那不流行的原因,,一個是apache實在出名,,另一個,就是它配置繁瑣墨跡啦,,難度略高啦~ PHP: Apache與nginx都是靜態(tài)頁面提供,,沒有動態(tài)頁面提供的能力,,那么他們必然要配合php一起來使用。 它與PHP交互的能力,,自然就成了一個衡量它的便民性的重要指標(biāo),。 Apache不用多說,yum/dnf install 或者apt-get install 輕輕松松拿下,,配置文件隨便改改就可以自由運行了,簡直就是“諾手收殘血”,,痛快利索,。 一個方便省事,,安全可靠,,資料感人(漢化程度),支持廣泛的apache+php,,還有一個配置墨跡,,資料近乎全外文的nginx+fastCGI,剛開始還未必能搞好,。 (這里其實我漏掉了很多問題,比如tomcat這種軟件,,我不清楚它與apache httpd兩者之間有什么PY,,啊不,有什么功能關(guān)系,。,。。) 最后找時間來說說源代碼的問題~先到這里吧,。 簡單的看一眼源代碼吧,我相信80%左右的人都不會去翻看apache或者Nginx 提供的源代碼,,估計大部分就是因為沒必要吧,。 不過一旦有了更改nginx,優(yōu)化等等的需求,,就需要去修改源代碼了,,簡簡單單的C語言對于我這種玩過驅(qū)動開發(fā)的人來說輕輕松松。 簡單看下nginx 的,,源代碼都放在src文件夾中
代碼還是比較清晰明了的,,這段截取的代碼,可以看出這是程序跑起來的時候獲取參數(shù)的基本函數(shù),,為方便也是寫成了靜態(tài),。 相比之下,apache的代碼看起來老套了很多,,有些甚至是上世紀(jì)流傳下來的,,注釋日期早的嚇人(笑) 因為沒有時間通看一遍的原因,并沒能分析出兩者架構(gòu)的區(qū)別,,是什么導(dǎo)致Nginx輕量的多,?不過Nginx這種及其嚴(yán)格清晰層次分明的代碼樹,確實讓我十分佩服,。感覺apache就稍顯混沌了,。 總結(jié):終于到了這個環(huán)節(jié),這么長時間的工作也算有了結(jié)果,。 對于中小型網(wǎng)站來說,,nginx還是apache提供服務(wù)都沒有任何的區(qū)別,,僅僅是在鏈接PHP的時候,Nginx略顯繁瑣,,配置不夠友好,。 當(dāng)業(yè)務(wù)量上升到一定層次時,需要集群的出現(xiàn),,Nginx 和apache就都有了自己的作用和位置,,兩者配合工作,世界就和平了,。 沒有nginx,只有apache,,行不行,?目前看來,不行,。 沒有apache,只有nginx,,行不行?好像可以,。 還有大量我不了解的知識,等待我去學(xué)習(xí),,關(guān)于兩者異同的問題,相信隨著我的學(xué)識進(jìn)步也會有更深層次的理解和分析,。我沒準(zhǔn)也會有新的看法,或者顛覆性的認(rèn)知,。 我在進(jìn)步,。我向往未來。 原創(chuàng)作者看過來:馬哥Linux原創(chuàng)作品征集
你的運維經(jīng)驗,、運維感悟、運維心得,、運維策略,、運維技能、運維遇到的坑,、學(xué)習(xí)心得等等,,都可以給我們投稿,!
|
|