一:介紹
nginx是一個高性能的HTTP和反向代理服務器,其特點是占用內存少,並發能力強。
二:名詞介紹
代理服務器:
代理服務器英文全稱是Proxy Server,其功能就是代理網絡用戶去取得網絡信息。
形象的說:它是網絡信息的中轉站,去獲取信息。
主要的功能有:
1.突破自身IP訪問限制,訪問國外站點。教育網、169網等網絡用戶可以通過代理訪問國外網站。
2.訪問一些單位或團體內部資源,如某大學FTP(前提是該代理地址在該資源 的允許訪問范圍之內),使用教育網內地址段免費代理服務器,就可以用於對教育 網開放的各類FTP下載上傳,以及各類資料查詢共享等服務。
3.突破中國電信的IP封鎖:中國電信用戶有很多網站是被限制訪問的,這種 限制是人為的,不同Serve對地址的封鎖是不同的。所以不能訪問時可以換一個國 外的代理服務器試試。
4.提高訪問速度:通常代理服務器都設置一個較大的硬盤緩沖區,當有外界 的信息通過時,同時也將其保存到緩沖區中,當其他用戶再訪問相同的信息時, 則直接由緩沖區中取出信息,傳給用戶,以提高訪問速度。
5.隱藏真實IP:上網者也可以通過這種方法隱藏自己的IP,免受攻擊.
反向代理
客戶端(用戶A)向反向代理的命名空間(name-space)中的內容發送普通請求,
接着反向代理將判斷向何處(原始服務器)轉交請求,並將獲得的內容返回給客戶端。
而客戶端始終認為它訪問的是原始服務器B而不是服務器Z。由於防火牆作用,只允許服務器Z進出,防火牆和反向代理共同作用保護資源服務器B。
用途:將防火牆后面的服務器提供給Internet用戶訪問。反向代理還可以為后端的多台服務器提供負載平衡或為后端較慢的服務器提供緩沖服務。
正向代理
正向代理是一個位於客戶端A和原始服務器(服務器B)之間的服務器(代理服務器Z),為了從原始服務器取得內容,用戶A向代理服務器Z發送一個請求並指定目標(服務器B),
然后代理服務器Z向服務器B轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理.
用途:在防火牆內的局域網客戶端提供訪問Internet的途徑。還可以使用緩沖特性減少網絡使用率。
從安全性來講:
正向代理允許客戶端通過它訪問任意網站並且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。
反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。
負載均衡
就是將服務器接收到的請求按照規則進行分發的過程.
Nginx支持的負載均衡調度算法方式如下:
1.weight輪詢(默認):接收到的請求按照順序逐一分配到不同的后端服務器,即使在使用過程中,某一台后端服務器宕機,Nginx會自動將該服務器剔除出隊列,請求受理情況不會受到任何影響。 這種方式下,可以給不同的后端服務器設置一個權重值(weight),用於調整不同的服務器上請求的分配率;權重數據越大,被分配到請求的幾率越大;該權重值,主要是針對實際工作環境中不同的后端服務器硬件配置進行調整的。
2.ip_hash:每個請求按照發起客戶端的ip的hash結果進行匹配,這樣的算法下一個固定ip地址的客戶端總會訪問到同一個后端服務器,這也在一定程度上解決了集群部署環境下session共享的問題。
3.fair:智能調整調度算法,動態的根據后端服務器的請求處理到響應的時間進行均衡分配,響應時間短處理效率高的服務器分配到請求的概率高,響應時間長處理效率低的服務器分配到的請求少;結合了前兩者的優點的一種調度算法。但是需要注意的是Nginx默認不支持fair算法,如果要使用這種調度算法,請安裝upstream_fair模塊。
4.url_hash:按照訪問的url的hash結果分配請求,每個請求的url會指向后端固定的某個服務器,可以在Nginx作為靜態服務器的情況下提高緩存效率。同樣要注意Nginx默認不支持這種調度算法,要使用的話需要安裝Nginx的hash軟件包。
三: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小時不間斷地運行