Nginx是俄羅斯人編寫的十分輕量級的HTTP服務(wù)器,Nginx,它的發(fā)音為“engine X”,是一個高性能的HTTP和反向代理服務(wù)器,同時也是一個IMAP/POP3/SMTP 代理服務(wù)器。Nginx是由俄羅斯人 Igor Sysoev為俄羅斯訪問量第二的 Rambler.ru站點開發(fā)的,它已經(jīng)在該站點運行超過兩年半了。Igor Sysoev在建立的項目時,使用基于BSD許可。
英文主頁:http://nginx.net?。
到2013年,目前有很多國內(nèi)網(wǎng)站采用Nginx作為Web服務(wù)器,如國內(nèi)知名的新浪、163、騰訊、Discuz、豆瓣等。據(jù)netcraft統(tǒng)計,Nginx排名第3,約占15%的份額(參見:http://news.netcraft.com/archives/category/web-server-survey/?)
Nginx以事件驅(qū)動的方式編寫,所以有非常好的性能,同時也是一個非常高效的反向代理、負載平衡。其擁有匹配Lighttpd的性能,同時還沒有Lighttpd的內(nèi)存泄漏問題,而且Lighttpd的mod_proxy也有一些問題并且很久沒有更新。
現(xiàn)在,Igor將源代碼以類BSD許可證的形式發(fā)布。Nginx因為它的穩(wěn)定性、豐富的模塊庫、靈活的配置和低系統(tǒng)資源的消耗而聞名.業(yè)界一致認(rèn)為它是Apache2.2+mod_proxy_balancer的輕量級代替者,不僅是因為響應(yīng)靜態(tài)頁面的速度非常快,而且它的模塊數(shù)量達到Apache的近2/3。對proxy和rewrite模塊的支持很徹底,還支持mod_fcgi、ssl、vhosts ,適合用來做mongrel clusters的前端HTTP響應(yīng)。
nginx做為HTTP服務(wù)器,有以下幾項基本特性:
處理靜態(tài)文件,索引文件以及自動索引;打開文件描述符緩沖.
無緩存的反向代理加速,簡單的負載均衡和容錯.
FastCGI,簡單的負載均衡和容錯.
模塊化的結(jié)構(gòu)。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服務(wù)器處理單頁中存在的多個SSI,則這項處理可以并行運行,而不需要相互等待。
支持SSL 和 TLSSNI.
Nginx專為性能優(yōu)化而開發(fā),性能是其最重要的考量,實現(xiàn)上非常注重效率 。它支持內(nèi)核Poll模型,能經(jīng)受高負載的考驗,有報告表明能支持高達 50,000個并發(fā)連接數(shù)。
Nginx具有很高的穩(wěn)定性。其它HTTP服務(wù)器,當(dāng)遇到訪問的峰值,或者有人惡意發(fā)起慢速連接時,也很可能會導(dǎo)致服務(wù)器物理內(nèi)存耗盡頻繁交換,失去響應(yīng),只能重啟服務(wù)器。例如當(dāng)前apache一旦上到200個以上進程,web響應(yīng)速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術(shù),使得它的CPU與內(nèi)存占用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內(nèi)存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩(wěn)定性而言,nginx比lighthttpd更勝一籌。
Nginx支持熱部署。它的啟動特別容易, 并且?guī)缀蹩梢宰龅?*24不間斷運行,即使運行數(shù)個月也不需要重新啟動。你還能夠在不間斷服務(wù)的情況下,對軟件版本進行進行升級。
Nginx采用master-slave模型,能夠充分利用SMP的優(yōu)勢,且能夠減少工作進程在磁盤I/O的阻塞延遲。當(dāng)采用select()/poll()調(diào)用時,還可以限制每個進程的連接數(shù)。
Nginx代碼質(zhì)量非常高,代碼很規(guī)范,手法成熟, 模塊擴展也很容易。特別值得一提的是強大的Upstream與Filter鏈。Upstream為諸如reverse proxy,與其他服務(wù)器通信模塊的編寫奠定了很好的基礎(chǔ)。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執(zhí)行完畢。它可以把前一個filter的輸出做為當(dāng)前filter的輸入,這有點像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)建,雖然前幾年文檔比較少,但是目前文檔方面比較全面,英文資料居多,中文的資料也比較多,而且有專門的書籍和資料可供查找。
nginx的作者和社區(qū)都在不斷的努力完善,我們有理由相信nginx將繼續(xù)以高速的增長率來分享輕量級HTTP服務(wù)器市場,會有一個更美好的未來。
本文轉(zhuǎn)自:https://www.linuxprobe.com/web-nginx-introduce.html