Nginx是俄羅斯人編寫的十分輕量級的HTTP服務(wù)器,Nginx,,它的發(fā)音為“engine X”, 是一個高性能的HTTP和反向代理服務(wù)器,,同時也是一個IMAP/POP3/SMTP 代理服務(wù)器.Nginx是由俄羅斯人 Igor Sysoev為俄羅斯訪問量第二的 Rambler.ru站點(diǎn)開發(fā)的,它已經(jīng)在該站點(diǎn)運(yùn)行超過兩年半了,。Igor Sysoev在建立的項(xiàng)目時,使用基于BSD許可,。 據(jù)說他當(dāng)初是F5的成員之一,,英文主頁:http:// ,。 俄羅斯的一些大網(wǎng)站已經(jīng)使用它超過兩年多了,, 一直表現(xiàn)不凡,相信想了解nginx的朋友都讀過阿葉大哥的利用nginx實(shí)現(xiàn)負(fù)載均衡.直到2007年4月,,俄羅 斯大約有20%左右的虛擬主機(jī)是由nignx服務(wù)或代理的,。Google在線安全博客中統(tǒng)計(jì)nginx服務(wù)或代理了大約所有Internet虛擬主機(jī)的 4%。而netcraft的統(tǒng)計(jì)顯示,,nginx服務(wù)的主機(jī)在過去的一年里以四倍的速度增長。短短的幾年里,,它的排名已躍進(jìn)第9。(參見:http://survey./Reports/200707/ ) Nginx以事件驅(qū)動的方式編寫,,所以有非常好的性能,,同時也是一個非常高效的反向代理,、負(fù)載平衡,。其擁有匹配 Lighttpd的性能,同時還沒有Lighttpd的內(nèi)存泄漏問題,,而且Lighttpd的mod_proxy也有一些問題并且很久沒有更新,。 因此我打算用其替代Apache應(yīng)用于Linux服務(wù)器上,。但是Nginx并不支持cgi方式運(yùn)行,原因是可以減少因此帶來的一些程序上的漏洞,。那 么我們必須使用FastCGI方式來執(zhí)行PHP程序,。 現(xiàn)在,Igor將源代碼以類BSD許可證的形式發(fā)布,。Nginx因?yàn)樗姆€(wěn)定性、豐富的模塊庫,、靈活的配置和低系統(tǒng)資源的消耗而聞名.業(yè)界一致認(rèn)為
它是Apache2.2+mod_proxy_balancer的輕量級代替者,不僅是因?yàn)轫憫?yīng)靜態(tài)頁面的速度非???,而且它的模塊數(shù)量達(dá)到Apache
的近2/3。對proxy nginx做為HTTP服務(wù)器,有以下幾項(xiàng)基本特性: 處理靜態(tài)文件,,索引文件以及自動索引,;打開文件描述符緩沖. Nginx專為性能優(yōu)化而開發(fā),,性能是其最重要的考量,實(shí)現(xiàn)上非常注重效率 ,。它支持內(nèi)核Poll模型,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支持高達(dá) 50,000個并發(fā)連接數(shù)。 Nginx具有很高的穩(wěn)定性,。其它HTTP服務(wù)器,,當(dāng)遇到訪問的峰值,或者有人惡意發(fā)起慢速連接時,,也很可能會導(dǎo)致服務(wù)器物理內(nèi)存耗盡頻繁交換,失 去響應(yīng),,只能重啟服務(wù)器,。例如當(dāng)前apache一旦上到200個以上進(jìn)程,,web響應(yīng)速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術(shù),使得 它的CPU與內(nèi)存占用率非常低,。nginx官方表示保持10,000個沒有活動的連接,,它只占2.5M內(nèi)存,,所以類似DOS這樣的攻擊對nginx來說基 本上是毫無用處的,。就穩(wěn)定性而言,nginx比lighttpd更勝一籌。 Nginx支持熱部署,。它的啟動特別容易, 并且?guī)缀蹩梢宰龅?*24不間斷運(yùn)行,,即使運(yùn)行數(shù)個月也不需要重新啟動。你還能夠在不間斷服務(wù)的情況下,,對軟件版本進(jìn)行進(jìn)行升級。 Nginx采用master-slave模型,能夠充分利用SMP的優(yōu)勢,,且能夠減少工作進(jìn)程在磁盤I/O的阻塞延遲,。當(dāng)采用select() /poll()調(diào)用時,還可以限制每個進(jìn)程的連接數(shù),。 Nginx代碼質(zhì)量非常高,,代碼很規(guī)范,,手法成熟,, 模塊擴(kuò)展也很容易,。特別值得一提的是強(qiáng)大的Upstream與Filter鏈,。 Upstream為諸如reverse proxy,與其他服務(wù)器通信模塊的編寫奠定了很好的基礎(chǔ)。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執(zhí)行完畢。它可以 把前一個filter的輸出做為當(dāng)前filter的輸入,這有點(diǎn)像Unix的管線。這意味著,,一個模塊可以開始壓縮從后端服務(wù)器發(fā)送過來的請求,,且可以在 模塊接收完后端服務(wù)器的整個請求之前把壓縮流轉(zhuǎn)向客戶端。 Nginx采用了一些os提供的最新特性如對sendfile (Linux2.2+),,accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,,從而大大提高了性能,。 當(dāng)然,,nginx還很年輕,多多少少存在一些問題,,比如:Nginx是俄羅斯人創(chuàng)建,,目前文檔方面還不是很完善.因?yàn)槲臋n大多是俄語,所以文檔方面 這也是個障礙.盡管nignx的模塊比較多,,但它們還不夠完善,。對腳本的支持力度不夠。 這些問題,,nginx的作者和社區(qū)都在努力解決,,我們有理由相信nginx將繼續(xù)以高速的增長率來分享輕量級HTTP服務(wù)器市場,會有一個更美好的 未來,。 |
|