Nginx 學習總結(1) —— 概述

Nginx 是什麼

Nginx 是一款輕量的(相比 ApacheLighttpd 而言)、高性能的 HTTP 服務器,同時也能夠用做反向代理、負載平衡器和 HTTP 緩存。Nginx 採用了模塊化、事件驅動的架構設計,使用了異步非阻塞的事件處理機制處理請求,使得在高負載下也能提供更可靠的性能。
圖片描述nginx

Nginx 模塊化體系

Nginx 的內部結構是由核心部分和一系列的功能模塊所組成。Nginx Core 實現底層的通信協議,爲其餘模塊構建了基本的運行時環境,而且構建了其餘各模塊的協做基礎。除此以外,應用相關的功能都是在一系列的功能模塊中完成。算法

Nginx 將各功能模塊組織成一條鏈,當有請求到達的時候,請求依次通過這條鏈上的部分或者所有模塊進行處理。每一個模塊實現特定的功能,例如,實現對請求解壓縮的模塊,實現與上游服務器(upstream模塊)進行通信的模塊,實現與 FastCGI 服務進行通信的模塊等等。後端

有兩個模塊比較特殊,他們居於 Nginx Core 和各功能模塊的中間,這兩個模塊就是 HTTP 模塊和 MAIL 模塊。它們用於處理與 HTTP 協議和 email 相關協議(SMTP/POP3/IMAP)有關的事件,而且確保這些事件能被以正確的順序來調用其餘的一些功能模塊。功能模塊分類:緩存

  1. event module:搭建了獨立於操做系統的事件處理機制的框架,及提供了各具體事件的處理
  2. phase handler:主要負責處理客戶端請求併產生待響應內容
  3. output filter:主要是負責對輸出的內容進行處理,例如,對輸出的圖片的 URL 進行替換之類的工做
  4. upstream:實現負載均衡的功能
  5. load-balancer:實現負載均衡的功能,經過特定的算法,在衆多的後端服務器中,選擇一個服務器出來做爲某個請求的轉發服務器

圖片描述

Nginx 進程模型

Nginx 程序在啓動後,會以守護進程的方式在系統後臺中運行,後臺進程包含一個 master 進程和多個 worker 進程。服務器

master 進程負責管理 Nginx 自己和其餘 worker 進程,包含:接收來自外界的信號、向各 worker 進程發送信號、監控 worker 進程的運行狀態、當 worker 進程退出後(異常狀況下),會自動從新啓動新的 worker 進程等。網絡

worker 進程主要處理基本的網絡事件,多個 worker 進程之間是對等的,他們同等競爭來自客戶端的請求,各進程互相之間是獨立的。一個請求,徹底由 worker 進程來處理,並且只在一個 worker 進程中處理。worker 進程的個數是能夠設置的,通常咱們會設置與機器 cpu 核數一致,這裏面的緣由與 Nginx 的進程模型以及事件處理模型是分不開的。架構

Nginx 的進程模型,能夠由下圖來表示:
圖片描述負載均衡

Nginx 經常使用命令

nginx -h —— Nginx 幫助命令
nginx -s stop —— 快速中止 Nginx
nginx -s quit —— 平滑中止 Nginx
nginx -s reload —— 重載配置文件(用新的配置文件啓動新 worker 進程,並平滑的關閉舊的 worker 進程)
nginx -t —— 檢測配置文件是否正確框架

相關文章
相關標籤/搜索