Nginx原始碼分析(一)

2021-08-27 02:56:05 字數 1585 閱讀 2398

2023年3月12日

niesongsong

1.錯誤定義

分析原始碼從最簡單的地方入手,首先來看nginx的錯誤碼定義,**在ngx_errno.h,ngx_errno.h檔案中。一共就兩個函式。

u_char

*ngx_strerror

(ngx_err_t

err,

u_char

*errstr

,size_t

size

);ngx_uint_t

ngx_strerror_init

(void

);系統啟動時會初始化全域性變數ngx_sys_errlist,這是乙個全域性ngx_str_t陣列,陣列大小為ngx_sys_nerr,每個元素都乙個結構體為:

typedef

struct

ngx_str_t

;初始化:ngx_uint_t ngx_strerror_init

所以初始化的函式是填充每乙個元素,該元素的陣列下標即為錯誤碼,元素len成員是指元素data字串的大小,data是該錯誤碼(陣列下標)的文字描述,通過函式strerror(err)來取得錯誤碼的資訊串。

獲取錯誤碼對應的資訊串:ngx_strerror

在ngx_sys_errlist找到err對應位置的錯誤資訊,如果錯誤碼不在陣列下標範圍則返回未知錯誤,同時檢查傳入的長度,太小於將會截斷錯誤資訊串。

分類:

linux, nginx

標籤:

2023年2月28日

niesongsong

2.mingw32:

3.vc2010 express:

cmd
2.設定vc的環境變數:在命令提示符中鍵入命令(根據vc的安裝目錄不同而不同,x86為引數)

"c:\program files\microsoft visual studio 10.0\vc\vcvarsall.bat" x86
設定mingw:在命令提示符鍵入命令(根據mingw32安裝目錄不同而不同):

c:\mingw\msys\1.0\msys.bat
檢查環境:

彈出mingw視窗,關閉其它的cmd視窗。在mingw32的視窗輸入:

cl.exe
cd /f/nginx/trunk
配置:

./auto/configure --prefix=. --with-cc-opt="-d fd_setsize=4096" --without-http_rewrite_module --without-http_gzip_module --with-cc=cl
註解:

–prefix=. 表示安裝目錄在本目錄下

–with-cc-opt=」-d fd_setsize=4096″ 預定義巨集fd_setsize大小4096

–without-http_rewrite_module 不載入rewite模組

–without-http_gzip_module 不載入gzip模組

–with-cc=cl 編譯器為cl

編譯:

nmake
在obj/目錄下為生成的中間檔案和nginx.exe檔案。

nginx 原始碼分析

近期準備研究一下nginx原始碼,此處記錄一下。計畫 1 了解evan miller 的文章 2 了解nginx的組織架構 3 了解nginx的基本資料結構 4 熟悉nginx的主要module及執行機制,主要是core http event os 5 簡單的module開發及測試 一 準備 為了方...

nginx原始碼分析 從原始碼看nginx框架總結

nginx原始碼總結 1 中沒有特別繞特別彆扭的編碼實現,從變數的定義呼叫函式的實現封裝,都非常恰當,比如從函式命名或者變數命名就可以看出來定義的大體意義,函式的基本功能,再好的架構實現在編碼習慣差的人實現也會黯然失色,如果透徹理解 的實現,領悟架構的設計初衷,覺得每塊 就想經過耐心雕琢一樣,不僅僅...

Nginx原始碼分析 connections陣列

本文的標題讓我糾結了好久,不知道是connections陣列合適,還是connections鍊錶更合適 nginx在此或多或少的注入了二者的特點,先不管是叫陣列還是叫鍊錶吧,只要能夠弄明白這個connections是怎麼回事就大功告成。nginx的每個worker程序都使用乙個相同的connecti...