0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一份Nginx模塊開發(fā)與架構(gòu)解析實戰(zhàn)文檔

Linux愛好者 ? 來源:Linux愛好者 ? 作者:Linux愛好者 ? 2021-03-03 15:36 ? 次閱讀

Nginx作為負載均衡服務:Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M行服務,也可以支持作為 HTTP代理服務對外進行服務。Nginx采用C進行編寫,不論是系統(tǒng)資源開銷還是CPU使用效率都比 Perlbal 要好很多。

今天分享一份Nginx模塊開發(fā)與架構(gòu)解析實戰(zhàn)文檔,文檔35.6 MB內(nèi)容全部可復制!相信看完后對Nginx會有更深入的了解。

這份文檔的價值

資料共三部分,首先通過介紹官方Nginx的基本用法和配置規(guī)則,幫助大家了解一般Nginx模塊的用法,然后重點介紹了如何開發(fā)HTTP模塊(含HTTP過濾模塊)來得到定制化的Nginx,其中包括開發(fā)一個功能復雜的模塊所需要了解的各種知識,并對內(nèi)存池的實現(xiàn)細節(jié)及TCP協(xié)議進行了詳細介紹;接著,綜合Nginx框架代碼分析了Nginx架構(gòu)的設計理念和技巧,此外,還新增了如何在模塊中支持HTTP變量,以及與slab共享內(nèi)存等相關(guān)的內(nèi)容。

通過這份資料,你可以學到:

對Nginx及如何將它搭建成一個高性能的Web服務器有深入的了解。

通過開發(fā)特定的HTTP模塊實現(xiàn)高性能Web服務器。

了解Nginx的架構(gòu)設計,學習其怎樣充分使用服務器上的硬件資源。

了解如何快速定位、修復Nginx中深層次Bug。

利用Nginx提供的框架,設計出任何基于TCP的、無阻塞的、易于擴展的服務器。

由于內(nèi)容過多,在此只以截圖展示部分內(nèi)容,詳細完整版的文檔網(wǎng)盤鏈接和提取碼請見文末。

第1章研究Nginx前的準備工作:

什么是Nginx?它有哪些特點?我們選擇Nginx的理由是什么?如何編譯安裝Nginx?這種安裝方式背后隱藏的又是什么樣的思想呢?本章將會回答上述問題。

第2章Nginx的配置:

通過本章的學習,大家可以熟練地配置一個靜態(tài)Web服務器:對影響Web服務器性能的各個配置項有深入的理解:對配置語法有全面的了解。通過互聯(lián)網(wǎng)或其他途徑得到任意模塊的配置說明,然后可通過修改nginx. conf文件來使用這些模塊的功能。

第3章開發(fā)一個簡單的HTTP模塊:

本章不會深入探討HTTP模塊與Nginx的各個核心模塊是如何配合工作的,而且這部分提到的每個接口將只涉及用法而不涉及實現(xiàn)原理,在第3部分我們才會進一步闡述本章提到的許多接口是如何實現(xiàn)異步訪問的。

第4章配置、error日志和請求上下文:

編寫全異步的HTTP模塊時,必須要有上下文來維持一個請求的必要信息,在4.5節(jié)中,首先探討請求的上下文與全異步實現(xiàn)的Nginx服務之間的關(guān)系,以及如何使用HTTP上下文,然后簡單描述HTTP框架是如何管理請求的上下文結(jié)構(gòu)體的。

第5章訪問第三方服務:

本章仍然以mytest模塊為例進行說明,但會擴展mytest的功能。注意,文中沒有提及的代碼(如定義nytest模塊)都與第3章完全相同。

第6章開發(fā)一個簡單的HTTP過濾模塊:

介紹如何開發(fā)HTTP過濾模塊。

第7章Nginx提供的高級數(shù)據(jù)結(jié)構(gòu):

將介紹Nginx實現(xiàn)的6個基本容器,熟練使用這6個基本容器,將會大大提高開發(fā)Nginx模塊的效率,也可以更加方便地實現(xiàn)復雜的功能。

第三部分針對高級讀者,這是本書的重點,徹底解析Nginx架構(gòu),深入探討Nginx各種設計的目的與意義,并對第二部分使用到的一些特性進行代碼設計實現(xiàn)上的探索。讀者讀完本部分,會對整個Nginx架構(gòu)有清晰的認識,可以編寫各種模塊(不局限于http模塊)插入到Nginx中,從而定制自己的Nginx。

第8章Nginx基礎(chǔ)架構(gòu):

實現(xiàn)高性能、定制化的Web服務器功能。

第9章事件模塊:

全面探討Nginx的事件驅(qū)動機制是如何工作的。

第10章HTTP框架的初始化:

將探討事件消費模塊的大戶”HTP 模塊。Nginx作為Web服務器,其HTTP模塊的數(shù)量遠超過了其他4類模塊(核心模塊、事件模塊、配置模塊、郵件模塊),其代碼規(guī)模也同樣遙遙領(lǐng)先。

第11章HTTP框架的執(zhí)行流程:

介紹動態(tài)的HTTP框架,主要探討在請求的生命周期中,基于事件驅(qū)動的HTTP框架是怎樣處理網(wǎng)絡事件以及怎樣集成各個HTTP模塊來共同處理HTTP請求的,同時,還會介紹為了簡化HTTP模塊的開發(fā)難度而提供的多個非阻塞的異步方法。

第12章upstream機制的設計與實現(xiàn):

討論ustream機制的設計和實現(xiàn),以此幫助大家全面了解如何使用upstream訪間上游服務器。

第13章郵件代理模塊:

介紹郵件代理功能到底做了哪些事情,會分析Nginx如何實現(xiàn)郵件代理功能。

第14章進程間的通信機制:

這部分并不是說明Linux F有哪些進程通信方式,而是為了說明Nginx選擇了哪些方式來同Bmaster進程和多個worker進程間的數(shù)據(jù),Nginx框架是怎樣重新封裝了這些進程間通信方式

第15章變量:

Nginx有許多功能體現(xiàn)在nginx.com這個腳本式的配置文件里,這些配置項的格式五花八門、風格各異,原因是它們都由各Nginx模塊自定義,并沒有什么統(tǒng)一的標準,這在第4章已經(jīng)提及。

第16章slab共享內(nèi)存:

本章除了說明如何使用它以外,同時還會詳細介紹實現(xiàn)原理,從中我們可以發(fā)現(xiàn)它的設計初衷及不適用的場景。Slab實現(xiàn)的源代碼非常高效,然而卻也有些生澀,本章會較多地通過源代碼說明各種二進制位操作,以幫助大家學習slab的編碼藝術(shù)。

責任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2717

    瀏覽量

    47555
  • Web服務器
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    24435
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    151

    瀏覽量

    12188

原文標題:Nginx 模塊開發(fā)與架構(gòu)全方位深度解析

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    一份DAC60508MCRTER的驅(qū)動代碼

    一份DAC60508MCRTER的驅(qū)動代碼 郵箱2212202914@qq.com 感謝大佬
    發(fā)表于 12-18 09:19

    Nginx日常運維方法Linux版

    ,Nginx安裝目錄? ? whereis nginx ? 如圖: 執(zhí)行目錄:/usr/sbin/nginx 模塊所在目錄:/usr/lib64/n
    的頭像 發(fā)表于 12-06 16:38 ?170次閱讀
    <b class='flag-5'>Nginx</b>日常運維方法Linux版

    確保網(wǎng)站無縫運行:Keepalived高可用與Nginx集成實戰(zhàn)

    目錄 keepalived高可用(nginx) keepalived簡介 keepalived的重要功能 keepalived高可用架構(gòu)圖 keepalived工作原理描述 keepalived實現(xiàn)
    的頭像 發(fā)表于 11-27 09:08 ?507次閱讀
    確保網(wǎng)站無縫運行:Keepalived高可用與<b class='flag-5'>Nginx</b>集成<b class='flag-5'>實戰(zhàn)</b>

    nginx負載均衡配置介紹

    代理 安裝Keepalived 配置Keepalived 編寫腳本監(jiān)控Keepalived和nginx的狀態(tài) 配置keepalived加入監(jiān)控腳本的配置 nginx負載均衡介紹 nginx應用場景之
    的頭像 發(fā)表于 11-10 13:39 ?266次閱讀
    <b class='flag-5'>nginx</b>負載均衡配置介紹

    麻煩廠家發(fā)一份CS1237-SO的驅(qū)動程序給我STC版本的

    麻煩廠家發(fā)一份CS1237-SO的驅(qū)動程序給我STC版本的741891100@qq.com
    發(fā)表于 08-23 14:48

    一份CSU32P20的ADC范例程序

    一份CSU32P20的ADC范例程序,郵箱2605822110@qq.com
    發(fā)表于 08-10 18:04

    nginx重啟命令linux步驟是什么?

    ./nginx -s reload 即可   方法二:查找當前nginx進程號,然后輸入命令:kill -HUP 進程號 實現(xiàn)重啟nginx服務   Nginx的整體
    發(fā)表于 07-11 17:13

    nginx重啟命令linux步驟是什么?

    ./nginx -s reload 即可   方法二:查找當前nginx進程號,然后輸入命令:kill -HUP 進程號 實現(xiàn)重啟nginx服務   Nginx的整體
    發(fā)表于 07-10 16:40

    給龍芯公司的些建議

    者初期的時候最疑惑的就是不知怎么下載得到源碼(這個問題你們已解決),接下來就是怎么編譯,以及怎么下載到開發(fā)板里去,在開發(fā)初期如果有這樣一份文檔,就是對我們
    發(fā)表于 06-21 16:58

    一份CS1237基于STM32硬件外設SPI的代碼

    一份CS1237基于STM32硬件外設SPI的代碼
    發(fā)表于 05-10 10:51

    求助一份電路圖

    各位大佬,誰有這個開發(fā)板的電路圖,有的話可以分享給小弟一份
    發(fā)表于 05-07 12:12

    一份CS1237的驅(qū)動程序代碼。

    一份STMM32F103C8T6驅(qū)動CS1237的驅(qū)動程序,那位大佬發(fā)下。郵箱2864165038@qq.com
    發(fā)表于 04-20 10:56

    STM32 IAP升級,KEIL如何一份代碼運行于兩個APP區(qū)?

    校驗。目前的問題是,沒辦法使用一份代碼運行兩個APP。兩個APP,則IAP跳轉(zhuǎn)不同的APP,跳轉(zhuǎn)的地址不樣,則代碼中需要設置的中斷向量表及鏈接地址。這樣,一份代碼就不行了,而且兩
    發(fā)表于 03-26 07:20

    一份明偉DRP—240—24電源盒

    一份明偉DRP—240—24電源盒電路圖
    發(fā)表于 02-08 16:47

    一份CS32L010最新資料

    需要一份最新的CS32L010 ARM? Cortex?-M0 32 位微控制器用戶參考手冊,還有例程,郵箱43952588@qq.com
    發(fā)表于 01-23 16:26