Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。Igor 將源代碼以類BSD許可證的形式發布。盡管還是測試版,但是,Nginx 已經因為它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名了。
首先是配置十分的簡單,而且功能非常強大。真是相見恨晚。
先來看看配置文件怎么寫吧
--------------------------------------------------------------
worker_processes 1;
events {
worker_connections 1024;
}
http{
upstream myproject {
#這里指定多個源服務器,ip:端口,80端口的話可寫可不寫
server 192.168.43.158:80;
server 192.168.41.167;
}
server {
listen 8080;
location / {
proxy_pass http://myproject;
}
}
}
---------------------------------------------------------------
nginx的負載均衡有哪些功能呢?
[list]
[*]如果后面的服務器其中一臺壞了,它能自動識別,更牛的是它好了之后nginx可以馬上識別
[*]服務器A和B,如果A的響應時間為3,B的響應時間為1,那么nginx會自動調整訪問B的概率是A的3倍,真正做到負載均衡
[/list]
在這里還是想說說nginx的安裝及運行
先到http://www.nginx.net/下載最新的源碼包。
我下載到的是nginx-0.5.33.tar.gz
解壓:tar zxvf nginx-0.5.33.tar.gz
接著:./configure
再接著:make
最后:make install
好的,安裝完成了。我在make的時候報了個錯,說HTTP Rewrite 模塊 有問題,我就./configure --without-http_rewrite_module
然后再make,make install就可以了。
安裝好了之后新建一個配置文件,把上面的配置文件內容拷進去,當然要修改你的IP,保存為比如 load_balance.conf
然后啟動:
/usr/local/nginx/sbin/nginx -c load_balence.conf
如果上面的步驟走下來有問題的話,可以參考:
nginx的中文維基
http://wiki.codemongers.com/NginxChs
當然也可以到官方網站
www.nginx.net
www.nginx.com
由于nginx的作者是俄國人,所以英文的文檔也不是那么完善,對于我來說nginx的最大優點還是配置簡單,功能強大
我曾經配過 apache-jk,那真的不是一般人能配的。太復雜了,而且只能用來做tomcat的負載均衡。
nginx就沒有這個限制,對它來說后面是什么服務器是完全透名的。
nginx就一點不爽,它本身目前還不能在windows下面跑。
===================Nginx Introduction==================================
Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器.Nginx是由俄羅斯人 Igor Sysoev為俄羅斯訪問量第二的 Rambler.ru站點開發的,它已經在該站點運行超過兩年半了。Igor Sysoev在建立的項目時,使用基于BSD許可。
據說他當初是F5的成員之一,英文主頁:http://nginx.net 。
俄羅斯的一些大網站已經使用它超過兩年多了,一直表現不凡,相信想了解nginx的朋友都讀過阿葉大哥的利用nginx實現負載均衡.直到2007年4月,俄羅斯大約有20%左右的虛擬主機是由nignx服務或代理的。Google在線安全博客中統計nginx服務或代理了大約所有Internet虛擬主機的 4%。而netcraft的統計顯示,nginx服務的主機在過去的一年里以四倍的速度增長。短短的幾年里,它的排名已躍進第9。(參見:http://survey.netcraft.com/Reports/200707/ )
Nginx以事件驅動的方式編寫,所以有非常好的性能,同時也是一個非常高效的反向代理、負載平衡。其擁有匹配 Lighttpd的性能,同時還沒有Lighttpd的內存泄漏問題,而且Lighttpd的mod_proxy也有一些問題并且很久沒有更新。
因此我打算用其替代Apache應用于Linux服務器上。但是Nginx并不支持cgi方式運行,原因是可以減少因此帶來的一些程序上的漏洞。那么我們必須使用FastCGI方式來執行PHP程序。
現在,Igor將源代碼以類BSD許可證的形式發布。Nginx因為它的穩定性、豐富的模塊庫、靈活的配置和低系統資源的消耗而聞名.業界一致認為它是 Apache2.2+mod_proxy_balancer的輕量級代替者,不僅是因為響應靜態頁面的速度非常快,而且它的模塊數量達到Apache的近 2/3。對proxy和rewrite模塊的支持很徹底,還支持mod_fcgi、ssl、vhosts ,適合用來做mongrel clusters的前端HTTP響應。
nginx做為HTTP服務器,有以下幾項基本特性:
* 處理靜態文件,索引文件以及自動索引;打開文件描述符緩沖.
* 無緩存的反向代理加速,簡單的負載均衡和容錯.
* FastCGI,簡單的負載均衡和容錯.
* 模塊化的結構。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服務器處理單頁中存在的多個SSI,則這項處理可以并行運行,而不需要相互等待。
支持SSL 和 TLSSNI.
Nginx專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率 。它支持內核Poll模型,能經受高負載的考驗,有報告表明能支持高達 50,000個并發連接數。
Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峰值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啟服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的 CPU與內存占用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。
Nginx支持熱部署。它的啟動特別容易, 并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。
Nginx采用master-slave模型,能夠充分利用SMP的優勢,且能夠減少工作進程在磁盤I/O的阻塞延遲。當采用select()/poll()調用時,還可以限制每個進程的連接數。
Nginx代碼質量非常高,代碼很規范,手法成熟, 模塊擴展也很容易。特別值得一提的是強大的Upstream與Filter鏈。 Upstream為諸如reverse proxy,與其他服務器通信模塊的編寫奠定了很好的基礎。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執行完畢。它可以把前一個filter的輸出做為當前filter的輸入,這有點像Unix的管線。這意味著,一個模塊可以開始壓縮從后端服務器發送過來的請求,且可以在模塊接收完后端服務器的整個請求之前把壓縮流轉向客戶端。
Nginx采用了一些os提供的最新特性如對sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,從而大大提高了性能。
當然,nginx還很年輕,多多少少存在一些問題,比如:Nginx是俄羅斯人創建,目前文檔方面還不是很完善.因為文檔大多是俄語,所以文檔方面這也是個障礙.盡管nignx的模塊比較多,但它們還不夠完善。對腳本的支持力度不夠。
這些問題,nginx的作者和社區都在努力解決,我們有理由相信nginx將繼續以高速的增長率來分享輕量級HTTP服務器市場,會有一個更美好的未來。
posted on 2009-05-11 10:16
Blog of JoJo 閱讀(244)
評論(3) 編輯 收藏 所屬分類:
每日一記