摘要:模塊化體系的內(nèi)部結(jié)構(gòu)是由核心部分和一系列的功能模塊所組成。除此之外,應(yīng)用相關(guān)的功能都是在一系列的功能模塊中完成。將各功能模塊組織成一條鏈,當(dāng)有請求到達(dá)的時候,請求依次經(jīng)過這條鏈上的部分或者全部模塊進(jìn)行處理。
Nginx 是什么
Nginx 是一款輕量的(相比 Apache、Lighttpd 而言)、高性能的 HTTP 服務(wù)器,同時也可以用作反向代理、負(fù)載平衡器和 HTTP 緩存。Nginx 采用了模塊化、事件驅(qū)動的架構(gòu)設(shè)計,使用了異步非阻塞的事件處理機(jī)制處理請求,使得在高負(fù)載下也能提供更可靠的性能。
Nginx 的內(nèi)部結(jié)構(gòu)是由核心部分和一系列的功能模塊所組成。Nginx Core 實現(xiàn)底層的通訊協(xié)議,為其他模塊構(gòu)建了基本的運行時環(huán)境,并且構(gòu)建了其他各模塊的協(xié)作基礎(chǔ)。除此之外,應(yīng)用相關(guān)的功能都是在一系列的功能模塊中完成。
Nginx 將各功能模塊組織成一條鏈,當(dāng)有請求到達(dá)的時候,請求依次經(jīng)過這條鏈上的部分或者全部模塊進(jìn)行處理。每個模塊實現(xiàn)特定的功能,例如,實現(xiàn)對請求解壓縮的模塊,實現(xiàn)與上游服務(wù)器(upstream模塊)進(jìn)行通訊的模塊,實現(xiàn)與 FastCGI 服務(wù)進(jìn)行通訊的模塊等等。
有兩個模塊比較特殊,他們居于 Nginx Core 和各功能模塊的中間,這兩個模塊就是 HTTP 模塊和 MAIL 模塊。它們用于處理與 HTTP 協(xié)議和 email 相關(guān)協(xié)議(SMTP/POP3/IMAP)有關(guān)的事件,并且確保這些事件能被以正確的順序來調(diào)用其他的一些功能模塊。功能模塊分類:
event module:搭建了獨立于操作系統(tǒng)的事件處理機(jī)制的框架,及提供了各具體事件的處理
phase handler:主要負(fù)責(zé)處理客戶端請求并產(chǎn)生待響應(yīng)內(nèi)容
output filter:主要是負(fù)責(zé)對輸出的內(nèi)容進(jìn)行處理,例如,對輸出的圖片的 URL 進(jìn)行替換之類的工作
upstream:實現(xiàn)負(fù)載均衡的功能
load-balancer:實現(xiàn)負(fù)載均衡的功能,通過特定的算法,在眾多的后端服務(wù)器中,選擇一個服務(wù)器出來作為某個請求的轉(zhuǎn)發(fā)服務(wù)器
Nginx 進(jìn)程模型Nginx 程序在啟動后,會以守護(hù)進(jìn)程的方式在系統(tǒng)后臺中運行,后臺進(jìn)程包含一個 master 進(jìn)程和多個 worker 進(jìn)程。
master 進(jìn)程負(fù)責(zé)管理 Nginx 本身和其他 worker 進(jìn)程,包含:接收來自外界的信號、向各 worker 進(jìn)程發(fā)送信號、監(jiān)控 worker 進(jìn)程的運行狀態(tài)、當(dāng) worker 進(jìn)程退出后(異常情況下),會自動重新啟動新的 worker 進(jìn)程等。
worker 進(jìn)程主要處理基本的網(wǎng)絡(luò)事件,多個 worker 進(jìn)程之間是對等的,他們同等競爭來自客戶端的請求,各進(jìn)程互相之間是獨立的。一個請求,完全由 worker 進(jìn)程來處理,而且只在一個 worker 進(jìn)程中處理。worker 進(jìn)程的個數(shù)是可以設(shè)置的,一般我們會設(shè)置與機(jī)器 cpu 核數(shù)一致,這里面的原因與 Nginx 的進(jìn)程模型以及事件處理模型是分不開的。
Nginx 的進(jìn)程模型,可以由下圖來表示:
nginx -h —— Nginx 幫助命令
nginx -s stop —— 快速停止 Nginx
nginx -s quit —— 平滑停止 Nginx
nginx -s reload —— 重載配置文件(用新的配置文件啟動新 worker 進(jìn)程,并平滑的關(guān)閉舊的 worker 進(jìn)程)
nginx -t —— 檢測配置文件是否正確
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/39854.html
摘要:配置信息主要分為六大部分全局設(shè)置事件設(shè)置服務(wù)器設(shè)置虛擬主機(jī)設(shè)置匹配設(shè)置反向代理設(shè)置。最大客戶端連接數(shù)由和決定作為服務(wù)器時,作為反向代理時,。參考文章服務(wù)器安裝及配置文件詳解的配置虛擬主機(jī)負(fù)載均衡和反向代理 這是 Nginx 學(xué)習(xí)總結(jié)的第二篇,上一篇介紹到了 Nginx 學(xué)習(xí)總結(jié)(1) —— 概述,這一篇會對 Nginx 的基本配置做一些總結(jié)。 Nginx 配置信息主要分為六大部分: m...
摘要:前言這里筑夢師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...
摘要:前言這里筑夢師是一名正在努力學(xué)習(xí)的開發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡書記錄下自己的學(xué)習(xí)歷程個人學(xué)習(xí)方法分享本文目錄更新說明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開發(fā)學(xué)習(xí)路線很長知識拓展很長在這里收取很多人的建議以后決 前言 這里筑夢師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程...
閱讀 1826·2021-11-23 09:51
閱讀 947·2021-10-08 10:05
閱讀 3431·2021-09-26 09:55
閱讀 1039·2021-09-22 15:21
閱讀 1633·2021-09-09 09:33
閱讀 1265·2019-08-30 15:56
閱讀 1285·2019-08-30 15:55
閱讀 969·2019-08-30 13:19