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