nginx系列-概念

php_yt發表於2020-10-06

什麼是nginx?

HTTP伺服器、(這不陌生)
反向代理伺服器(負載均衡、分散式)
題外:什麼是代理、反代理?
注:該部分圖片引自文章 Nginx 入門

  • 正向代理:
    客戶端非常明確訪問的伺服器地址。
    伺服器只清楚來自哪個代理伺服器,而不清楚具體的客戶端。
  • 反向代理:
    客戶端不知道具體由哪個伺服器處理。
    伺服器非常明確請求來自哪個客戶端。

nginx的優點

  1. 處理高併發更優秀
    單機支援10萬以上的併發連線單機支援10萬以上的併發連線
  2. 高擴充套件
    由多個耦合度極低的模組組成,造就了龐大的官方公佈之外的第三方模組,它們和官方公佈的一樣容易使用。由多個耦合度極低的模組組成,造就了龐大的官方公佈之外的第三方模組,它們和官方公佈的一樣容易使用。由多個耦合度極低的模組組成,造就了龐大的官方公佈之外的第三方模組,它們和官方公佈的一樣容易使用。由多個耦合度極低的模組組成,造就了龐大的官方公佈之外的第三方模組,它們和官方公佈的一樣容易使用。
  3. 高可靠
    核心框架程式碼的優秀設計、模組設計的簡單性;另外,官方提供的常用模組都非常穩定,每個worker程式相對獨立,master程式在1個worker程式出錯時可以快速“拉起”新的worker子程式提供服務。核心框架程式碼的優秀設計、模組設計的簡單性;另外,官方提供的常用模組都非常穩定,每個worker程式相對獨立,master程式在1個worker程式出錯時可以快速“拉起”新的worker子程式提供服務。
  4. 低記憶體消耗
    一般情況下,10000個非活躍的HTTP Keep-Alive連線在Nginx中僅消耗2.5MB的記憶體,這是Nginx支援高併發連線的基礎。一般情況下,10000個非活躍的HTTP Keep-Alive連線在Nginx中僅消耗2.5MB的記憶體,這是Nginx支援高併發連線的基礎。
  5. 熱部署
    master管理程式與worker工作程式的分離設計,使得Nginx能夠提供熱部署功能,即可以在7×24小時不間斷服務的前提下,升級Nginx的可執行檔案。當然,它也支援不停止服務就更新配置項、更換日誌檔案等功能。
  6. 最自由的BSD許可協議
    這是Nginx可以快速發展的強大動力。BSD許可協議不只是允許使用者免費使用Nginx,它還允許使用者在自己的專案中直接使用或修改Nginx原始碼,然後釋出。這吸引了無數開發者繼續為Nginx貢獻自己的智慧。

web伺服器的請求處理機制

假如一個請求的處理,需要一把錘子和鉗子

  1. 多程式方式
    主程式生成一個子程式出來和客戶端建立連線進行互動。
    每個人都分配一把錘子和鉗子,兩個人互不干擾,但需要很多錘子和鉗子。
  2. 多執行緒方式
    主程式派生出一個執行緒出來和客戶端進行互動。
    每個人共用一套錘子和鉗子,你用錘子時我用鉗子,協調進行,優點節省資源,但如果錘子和鉗子意外丟失,將導致所有人無法工作。
  3. 非同步方式
    食堂(同步):排隊打飯,前一個人打完飯,下個人才能打飯。
    攝像館:處理大量人流;拍照後登記在冊,出片後通知來取。

nginx基本處理架構

nginx系列-1

  1. Nginx啟動後,會產生一個主程式,主程式執行一系列的工作後會產生一個或者多個工作程式

nginx系列-1

  1. 在客戶端請求動態站點的過程中,Nginx伺服器還涉及和後端伺服器的通訊。Nginx將接收到的Web請求通過代理轉發到後端伺服器,由後端伺服器進行資料處理和組織;

nginx系列-1

  1. Nginx為了提高對請求的響應效率,降低網路壓力,採用了快取機制,將歷史應答資料快取到本地。保障對快取檔案的快速訪問。

nginx系列-1

master程式

master程式主要用來管理worker程式,具體包括以下主要功能:

  1. 接收來自外界的訊號

nginx系列-1

  1. 處理配置檔案讀取
  2. 建立,繫結和關閉套接字
    <?php
    //建立socket物件
    $socket = socket_create(AF_INET, SOCKET_STREAM, SOL_TCP);
    //繫結埠號
    socket_bind($socket, 80);
    //監聽
    socket_listen($socket,5);
    //建立的客戶端連線
    $client = socket_accept($server);
    //關閉tcp伺服器
    socket_close($server);
  3. 啟動,終止和維護worker程式數

nginx系列-1

worker程式

worker程式的主要任務是完成具體的任務邏輯。其主要關注點是與客戶端或後端真實伺服器(此時nginx作為中間代理)之間的資料可讀/可寫等I/O互動事件。

  1. 接收客戶端請求
  2. 將請求一次送入各個功能模組進行過濾處理
  3. 與後端伺服器通訊,接收後端伺服器處理結果
  4. 資料快取
  5. 響應客戶端請求

nginx系列-1

本作品採用《CC 協議》,轉載必須註明作者和本文連結
focus

相關文章