1. 程式人生 > >nginx系列2 概述

nginx系列2 概述

一. nginx功能概述

  nginx 提供的基本功能服務歸納為:基本HTTP服務、高階HTTTP服務、郵件代理服務、TCP/UDP 代理服務等四大類。

  (1) Nginx提供基本HTTP服務,可以作為HTTP代理伺服器和反向代理伺服器,支援通過快取加速訪問,可以完成簡單的負載均衡和容錯,支援包過濾功能,支援SSL等。

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

  (3) Nginx 作為郵件代理伺服器是最早開發這個產品的目的之一,它支援IMAP/POP3代理服務功能,支援內容SMTP代理服務功能。

 

  1.1 基本HTTP服務

    (1) 處理靜態檔案(如HTML靜態網頁及請求),處理索引檔案以及支援自動索引。

    (2) 開啟並自行管理檔案描述符快取。

    (3) 提供反向代理服務,並且可以使用快取加速反向代理,同時完成簡單負載均衡和容錯。

    (4) 提供遠端FastCGI服務的快取機制,加速訪問,同時完成簡單的負載均衡和容錯。

    (5) 使用Nginx的模組化特性提供過濾器功能,Nginx基本過濾器包括Gzip壓縮、rgnges支援、chunked響應、XSLT、SSL以有影象縮放等。

    (6) 支援HTTP下的安全套接層安全協議SSL。

         1.2 高階http服務

    (1) 支援基於名字和IP的虛擬主機設定。

    (2) 支援http的Keep-alive模式和管線Pipelined模型連線。

    (3) 支援重新載入配置以及線上升級時,無須中斷中在處理的請求。

    (4) 自定義訪問日誌格式、帶快取的日誌寫操作以及快速日誌輪轉和syslog日誌記錄。

    (5) 提供http狀態3xx~5xx錯誤程式碼重定向功能。

    (6) 支援重寫(Rewrite)模式擴充套件,使用正則表示式更改URL。

    (7) 支援HTTP dav模組,為http webdav 提供put、DELETE、MKCOL、COPY、MOVE方法。

    (8) 支援FLV流和MP4流傳輸。

    (9) 支援網路監控,包括基於客戶端IP地址和HTTP基本認證的訪問控制、速度限制、來自同一地址的同時連線數或請求數限制等。

    (10) 支援嵌入Perl語言。

    (11) njs指令碼語言。

  1.3 郵件代理服務

    (1) 支援使用外部HTTP認證伺服器重定向 使用者到IAMP/POP3後端,並支援IMAP認證方式和POP3認證方式。

    (2) 支援使用外部HTTP認證伺服器認證使用者後 重定向連線到內部SMTP後端,並支援SMTP認證方式。

    (3) 支援郵件代理服務下的安全套接層安全協議SSL。

    (4) 支援純文字通訊協議的擴充套件協議starttls。

  1.4  TCP/UDP代理伺服器功能

    (1) TCP/UDP的通用代理。

    (2) SSL和TLS SNI 支援TCP。

    (3) 負載均衡和容錯。

    (4) 基於客戶端地址的訪問控制。

    (5) 根據客戶端地址執行不同的功能。

    (6) 限制來自同一個ip地址的同時連線數。

    (7) 自定義訪問日誌格式、帶快取的日誌寫操作以及快速日誌輪轉和syslog日誌記錄。

    (8) 基於IP的地理定位。

    (9)  njs指令碼語言。

 

二.常用功能介紹

  2.1 HTTP代理和反向代理

    代理服務和反向代理是Nginx伺服器作為Web伺服器的主要功能之一,尤其是反向代理應用廣泛。Nginx伺服器轉發來自前端的請求,效能穩定而且後端轉發與業務配置相互分離,配置靈活。在後端轉換請求完全不用關心網路環境如何,可以指定任意的ip和port或其他型別連結請求等。

    通過正則表示式進行相關配置,可以實現根據不同的表示式,採取不同的轉發策略,並且對後端異常判斷則重新轉向另一後端ip。

  2.2 負載均衡

    一般來說負載均衡是將大量前端併發訪問或資料流量分擔到多個後端網路節點上分別處理,這樣可有效減少前端使用者等待響應的時間。對於Nginx負載策略可分為兩大類:內建策略和擴充套件策略。(1)內建策略:輪詢、加權輪詢、ip hash 三種;(2) 擴充套件策略主要通過第三方模組實現,種類豐富,常見有url hash、fair等。預設內建策略會被編譯進Nginx核心,使用時只需要在Nginx伺服器配置中設定相關引數即可。而擴充套件策略需要手動將第三方模組編碼到Nginx核心。

  2.3 Web快取

    Nginx伺服器的Web快取服務主要由proxy_cache和fastcgi_cache的相關指令集構成。其中proxy_cache主要用於在Nginx伺服器提供反向代理服務時,對後端源伺服器的返回內容進行URL快取; fastcgi_cache主要用於對fastcgi的動態程式進行快取。另外還有第三方模組的Web快取功能。

    Squid也是一款相當流行的開源代理伺服器和Web快取伺服器。Ngnix伺服器對多核CPU的排程比Squid更好,效能高於Squid。

 

 

  參考文獻:

    正向代理和反向代理:https://www.cnblogs.com/xdp-gacl/p/3706853.html

    官方介紹:http://nginx.org/en/

    Nginx高效能Web伺服器詳解