天天看點

《高性能Linux伺服器建構實戰》——1.2節為什麼要選擇Nginx

1.2.1 nginx與apache的異同

nginx和apache一樣,都是http伺服器軟體,在功能實作上都采用子產品化結構設計,都支援通用的語言接口,如php、perl、python等,同時還支援正向和反向代理、虛拟主機、url重寫、壓縮傳輸、ssl加密傳輸等。它們之間最大的差别是apache的處理速度很慢,且占用很多記憶體資源,而nginx卻恰恰相反;在功能實作上,apache的所有子產品都支援動、靜态編譯,而nginx子產品都是靜态編譯的,同時,apache對fcgi的支援不好,而nginx對fcgi的支援非常好;在處理連接配接方式上,nginx支援epoll,而apache卻不支援;在空間使用上,nginx安裝包僅僅隻有幾百k,和nginx比起來apache絕對是龐然大物。在了解了nginx和apache之間的異同點後基本上就知道了nginx作為http伺服器的優勢所在。

1.2.2 選擇nginx的優勢所在

通過上面的簡單介紹,可以看出,nginx作為http伺服器的優勢是顯而易見的,它有很多其他web伺服器無法比拟的性能和優勢:

作為web伺服器,nginx處理靜态檔案、索引檔案,自動索引的效率非常高。

作為代理伺服器,nginx可以實作無緩存的反向代理加速,提高網站運作速度。

作為負載均衡伺服器,nginx既可以在内部直接支援rails和php,也可以支援http代理伺服器對外進行服務,同時還支援簡單的容錯和利用算法進行負載均衡。

在性能方面,nginx是專門為性能優化而開發的,在實作上非常注重效率。它采用核心poll模型,可以支援更多的并發連接配接,最大可以支援對50 000個并發連接配接數的響應,而且隻占用很低的記憶體資源。

在穩定性方面,nginx采取了分階段資源配置設定技術,使得cpu與記憶體的占用率非常低。nginx官方表示,nginx保持10 000個沒有活動的連接配接,而這些連接配接隻占用2.5mb記憶體,是以,類似dos這樣的攻擊對nginx來說基本上是沒有任何作用的。

在高可用性方面,nginx支援熱部署,啟動速度特别迅速,是以可以在不間斷服務的情況下,對軟體版本或者配置進行更新,即使運作數月也無需重新啟動,幾乎可以做到7×24小時不間斷地運作。