nginx系列 2 概述


一. nginx功能概述

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

  (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。

 

 三.優勢

    響應請求更快,

    輕量級,

    低代內存消耗:一般情況下10000個非活躍的http  keep-alive連接在nginx上僅消耗2.5MB的內存,這是Nginx支持高並發連接的基礎。

    單機支持10萬以上的並發連接

    

 

  參考文獻:

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

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

    Nginx高性能Web服務器詳解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM