nginx學習:Nginx初探

1.常見服務器產品介紹:

        Apache服務器(開源免費):

                優點:跨平臺能力強,安全性能高,運行速度快,性能相對穩定。

                缺點:Apache在設計時使用以“進程”爲基礎架構,進程比線程消耗更多的系統開支,這導致Apache在多處理環境中性能有所下降。因此,在對一個Apache Web站點進行擴容時,通常是增加服務器或擴充集羣節點而不是增加處理器;

        Microsoft IIS服務器(付費產品):

                優點:IIS和windows server 組合,可以提供可靠高效的完整的服務器解決方案。

                缺點:作爲付費軟件,部署成本高;

        Tomcat服務器(開源免費)

                優點:Servlet和JSP容器,作爲輕量級應用服務器,在中小型系統和併發用戶不是很多的情況下變現突出;體積小,安裝和部署方便;

                缺點:無法滿足複雜業務場景需求,可以處理靜態html,但能力不如Apache服務器;

        Lighttpd服務器(開源輕量級):

                優點:專門針對高性能網站,提供了一套安全、快速、兼容性良好且靈活的Web Server環境,且內存開銷低,CPU佔用率低。

                缺點:與Apache等大型Web服務器軟件相比,在在功能上存在不足和缺陷;

2.Nginx誕生:

        Nginx的誕生是爲了解決俄羅斯訪問量最大的Rambler.ru站點而開發的,是一款免費開源的高性能HTTP服務器及反向代理服務器,同事還提供了IMAP/POP3代理服務(POP3是收郵件的協議,SMTP是發郵件的協議,IMAP是一種郵箱通信協議。);

3.Nginx的功能特性:

        Nginx提供的基本服務功能大致可以分爲三大類:

        1)Nginx提供基本HTTP服務,可以作爲HTTP代理服務器和反向代理服務器,支持通過緩存加速訪問,可以完成簡單的負載均衡和容錯,支持包過濾功能,支持SSL等;

            eg:處理靜態文件(如html靜態網頁及請求);處理索引文件以及支持自動索引;

                   打開並自行管理文件描述符緩存

                   提供反向代理,並且可以使用緩存加速反向代理,同時完成簡單負載均衡及容錯;

                   提供遠程FastCGI服務的緩存機制,加速訪問,同時完成簡單的負載均衡及容錯;

                   使用Nginx的模塊化特性提供過濾器功能。Nginx基本過濾器包括gzip壓縮、ranges支持、chunked響應、XSLT、SSI以及圖像縮放等功能;

                    支持HTTP下的安全套接層安全協議SSL

                    注:

FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行着,只要激活後,不會每次都要花費時間去fork一次(這是CGI最爲人詬病的fork-and-execute 模式)。它還支持分佈式的運算, 即 FastCGI 程序可以在網站服務器以外的主機上執行並且接受來自其它網站服務器來的請求。
FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行爲是將CGI解釋器進程保持在內存中並因此獲得較高的性能。衆所周知,CGI解釋器的反覆加載是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。

        2)Nginx提供高級HTTP服務,可以進行自定義配置,支持虛擬機,支持URL重定向,支持網絡監控,支持流媒體傳輸等。

                    支持基於名字和IP的虛擬主機設置。

                    支持HTTP/1.0中的KEEP-Alive模式和管線模型連接

                    支持重新加載配置以及在線升級時,無須中斷正在處理的請求

                    自定義訪問日誌格式、帶緩存的日誌寫操作以及快速日誌轉輪。

                    提供3xx-5xx錯誤代碼重定向功能。

                    支持重寫(Rewrite)模塊拓展。

                    支持HTTP DAVM模塊,從而爲Http WebDAV提供PUT、DELETE、MKCOL 、COPY以及MOVE方法

                    支持FLV流和MP4流傳輸

                    支持網絡監控,包括基於客戶端IP地址和HTTP基本認證機制的訪問控制、速度限制、來自同一地址的同時連接數或請求數限制等;

                    支持嵌入Perl語言

       3)Nginx作爲郵件代理服務器最早開發這個產品的目的之一,支持IMAP/POP3代理服務功能,支持內部SMTP代理服務功能;

                    支持使用外部Http認證服務器重定向用戶到IMAP/POP3後端,並支持IMAP認證方式IMAP和POP3認證方式。

                    支持使用外部HTTP認證服務器認證用戶重定向連接到內部SMTP後端,並支持SMTP認證方式;

                    支持郵件代理下的安全套接層安全協議SSL;

                    支持純文本通信協議的擴展協議STARTTLS;

    4.常用功能介紹:

               1)HTTP代理和反向代理

                            Nginx服務器轉發前端請求性能穩定,並且後端轉發與業務配置相互分離,配置相當靈活。

               2)負載均衡

                           一般包含兩個含義:

                            1)將單一的重負載分擔到多個網絡節點上做並行處理,每個節點處理結束後將結果彙總返回給用戶,這樣做可以大幅度提高網絡系統的處理能力。

                            2)將大量的前端併發訪問或數據流量分擔到多個後端網絡節點上分別處理,這樣可以有效地減少前端的等待時間;WEB服務器、FTP服務器、企業關鍵應用服務器一般說的負載均衡主要是針對大量的前端訪問和流量進行分流;

                Nginx負載均衡的策略可以劃分爲兩大類:即內置策略和擴展策略;內置策略主要包括輪詢、加權輪詢、和IP hash三種。擴展策略主要通過第三方模塊實現,常用的有url hash、fair等;

            輪詢策略:將每個前端請求按順序(時間順序或者排列次序)逐一分配到不同的後端節點上,對於出現問題的後端節點自動排除。

            加權輪詢:在基本的輪詢策略上,指定後端各個節點被輪詢到的機率。加權輪詢策略主要用於後端節點性能不均的情況;

             IPhash 策略:是將前端的訪問IP進行hash操作,根據hash結果將請求分配給不同的後端節點。每個前端訪問IP會固定訪問一個後端節點。這樣做的好處是避免前端用戶的session在後端多個節點上共享的問題;

            擴展策略中的url hash與IP hash相近,不同之處在於url hash是對前端請求的url進行了hash操作;url hash策略的優點在於,如果後端有緩存服務器,能夠提高緩存效率,同時也解決了session問題;缺點是 如果後端節點出現異常,不能自動排除該節點。如果後端節點出現異常,經常導致nginx返回503錯誤;

            拓展中的第三方模塊fair則是將前端請求轉發到一個最近負載最小的後臺節點,Nginx通過對後端節點的響應時間來判斷負載情況;響應時間短的,節點負載相對就輕;

              3)web緩存:

                    web緩存服務器,作爲網頁服務的前置緩存服務器,在很多優秀的站點中,被用於緩存前端請求,從而提高web服務器的性能;

                    Nginx服務器的web緩存服務主要由Proxy_Cache相關指令集和FastCGI_Cache相關指令集結構。

                    Proxy_Cache主要用於在Nginx服務器提供反向代理服務時,對後端源服務器的返回內容進行URL緩存;

                    FastCGI_Cache主要用於對FastCGI的動態程序進行緩存。

                    還有一款常用的第三方模塊ngx_cache_purge也是Nginx服務器Web緩存功能中經常用到的。主要用於清除Nginx服務器上指定的URL緩存;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章