Nginx系列介紹(一)
一、介紹
Nginx是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP代理伺服器。
Nginx是一款輕量級的Web伺服器/反向代理伺服器以及電子郵件代理伺服器,並在一個BSD-like協議下發行。由俄羅斯的程式設計師lgor Sysoev所開發,供俄國大型的入口網站及搜尋引擎Rambler使用。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好。
Nginx相較於Apache\lighttpd具有佔有記憶體少,穩定性高等優勢,並且依靠併發能力強,豐富的模組庫以及友好靈活的配置而聞名。在Linux作業系統下,
二、名詞解釋
代理伺服器
一般是指區域網內部的機器通過代理伺服器傳送請求到網際網路上的伺服器,代理伺服器一般作用在客戶端。
反向代理
客戶端(使用者A)向反向代理的名稱空間(name-space)中的內容傳送普通請求,接著反向代理將判斷向何處(原始伺服器)轉交請求,並將獲得的內容返回給客戶端。而客戶端始終任務它訪問的事原始伺服器B而不是伺服器Z。由於防火牆作用,只允許伺服器Z進出,防火牆和反向代理共同作用保護了院子資源伺服器
用途:將防火牆後面的伺服器提供給Internet使用者訪問。反向代理還可以為後端的多臺伺服器提供負載平衡或為後端較慢的伺服器提供緩衝服務。
正向代理
正向代理是一個位於客戶端A和原始伺服器(伺服器B)之間的伺服器(代理伺服器Z),為了從原始伺服器取得內容,使用者A向代理伺服器Z傳送一個請求並指定目標(伺服器B),然後代理伺服器Z向伺服器B轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設定才能使用正向代理。
用途:在防火牆內的區域網客戶端提供訪問Internet的途徑。還可以使用緩衝特性減少網路使用率。
從安全性來講:
正向代理允許客戶端通過它訪問任意網站並且隱藏客戶端自身,因此你必須採取安全措施以確保僅為經過授權的客戶端提供服務。
反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。
三、Nginx VSApache
相同點:
1、都是HTTP伺服器軟體
2、功能上都採用模組化結構設計
3、都支援通用的語言介面,如PHP、Perl、Python等
4、支援正向、反向代理、虛擬主機、URL重寫、壓縮傳輸、SSL加密傳輸
不同點:
1、Apache處理速度很慢,佔用很多記憶體資源
2、功能上,Apache所有模組支援動靜態編譯,Nginx模組都是靜態編譯的
3、對Fcgi的支援:Apache支援的很不好,Nginx支援非常好
4、處理連線方式:Nginx支援epoll,Apache不支援
5、空間使用上:Nginx安裝包僅幾百K
四、Nginx優勢
1、作為Web伺服器,Nginx處理靜態檔案、索引檔案,自動索引的效率非常高
2、作為代理伺服器,Nginx可以實現無快取的反向代理加速,提高網站執行速度
3、作為負載均衡伺服器,Nginx既可以在內部直接支援Rails和PHP,也可以支援HTTP代理伺服器對外進行服務,同時還支援簡單的容錯和利用演算法進行負載均衡
4、在效能方面,Nginx是專門為效能優化而開發的,實現上非常注重效率。它採用核心Poll模型,可以支援更多的併發連線,最大可以支援對5萬個併發連線數的響應,而且只佔用很低的記憶體資源
5、在穩定性方面,Nginx採取了分階段資源分配技術,使得CPU與記憶體的佔用率非常低。Nginx官方表示,Nginx保持1萬個沒有活動的連線,而這些連線只佔用2.5MB記憶體,因此,類似DOS這樣的攻擊對Nginx來說基本上是沒有任何作用的
6、在高可用性方面,Nginx支援熱部署,啟動速度特別迅速,因此可以在不間斷服務的情況下,對軟體版本或者配置進行升級,即使執行數月也無需重新啟動,幾乎可以做到7x24小時不間斷地執行
Nginx具有很高的穩定性;支援熱部署;程式碼質量非常高,程式碼很規範,手法成熟,模組擴充套件也很容易;採用了一些os提供的最新特性如對sendfile(Linux2.2+),accept-filter(FreeBSD4.1+),TCP_DEFER_ACCEPT(Linux 2.4+)的支援,從而大大提高了效能。