多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Nginx 源碼結構分析

Nginx 源碼結構分析

來源:程序員人生   發布時間:2015-01-23 09:00:31 閱讀次數:3293次

Nginx 源碼基本結構

        學習 Nginx 的構架之前,對 Nginx 源碼結構進行簡單的分析,可以了解 Nginx 模塊結構和模塊之間的關系。充分理解Nginx 的基本構架。解壓源碼到相應的文件后,我們可以看到有1個寄存源碼的目錄文件src,該目錄文件存儲Nginx 所有的源代碼。首先,我們通過命令查看源碼的組織結構:

$ tree -L 1 . ├── core ├── event ├── http ├── mail ├── misc └── os 6 directories, 0 files

        輸出結果顯示有 6 個目錄文件,以下是這些目錄文件的功能:
  • core  :Nginx的核心源代碼,包括經常使用數據結構的和Nginx 內核實現的核心代碼;
  • event:Nginx事件驅動模型,和定時器的實現相干代碼;
  • http   :Nginx 實現http 服務器相干的代碼;
  • mail  :Nginx 實現郵件代理服務器相干的代碼;
  • misc :輔助代碼,測試C++頭 的兼容性,和對 Google_PerfTools 的支持;
  • os     :不同體系統結構所提供的系統函數的封裝,提供對外統1的系統調用接口;

        下面主要針對重要的3個目錄進行簡單的介紹:core 目錄、http 目錄、event 目錄;

core 核心模塊結構

        core 目錄中的源碼定義了 Nginx 服務器最基本的數據結構和最基本的核心模塊(核心模塊為其他模塊提供了公共調用的基本功能)。首先看下該核心模塊的源碼結構:

/* 實現對各模塊的整體控制,是 Nginx 程序 main 函數 */ ├── nginx.c ├── nginx.h /* 以下是基本數據結構及其操作 */ ├── ngx_array.c ├── ngx_array.h ├── ngx_hash.c ├── ngx_hash.h ├── ngx_list.c ├── ngx_list.h ├── ngx_queue.c ├── ngx_queue.h ├── ngx_radix_tree.c ├── ngx_radix_tree.h ├── ngx_rbtree.c ├── ngx_rbtree.h ├── ngx_output_chain.c ├── ngx_buf.c ├── ngx_buf.h /* 全部Nginx 模塊構架基本配置管理 */ ├── ngx_conf_file.c ├── ngx_conf_file.h ├── ngx_config.h /* 網絡連接收理 */ ├── ngx_connection.c ├── ngx_connection.h /* 定義1些頭文件與結構別名 */ ├── ngx_core.h ├── ngx_cpuinfo.c /* CRC 校驗表信息 */ ├── ngx_crc32.c ├── ngx_crc32.h ├── ngx_crc.h /* 實現對系統運行進程參數、資源的通用管理 */ ├── ngx_cycle.c ├── ngx_cycle.h /* 實現文件讀寫相干的功能 */ ├── ngx_file.c ├── ngx_file.h /* socket 網絡套接字功能 */ ├── ngx_inet.c ├── ngx_inet.h /* 實現日志輸出、管理的相干功能 */ ├── ngx_log.c ├── ngx_log.h ├── ngx_syslog.c ├── ngx_syslog.h /* hash字符串操作 */ ├── ngx_md5.c ├── ngx_md5.h ├── ngx_murmurhash.c ├── ngx_murmurhash.h /* 內存管理相干文件 */ ├── ngx_open_file_cache.c ├── ngx_open_file_cache.h ├── ngx_palloc.c ├── ngx_palloc.h ├── ngx_shmtx.c ├── ngx_shmtx.h ├── ngx_slab.c ├── ngx_slab.h /* PCRE 上層封裝 */ ├── ngx_parse.c ├── ngx_parse.h /* 反向代理的協議信息 */ ├── ngx_proxy_protocol.c ├── ngx_proxy_protocol.h /* 實現支持正則表達式 */ ├── ngx_regex.c ├── ngx_regex.h /* 字符串處理功能 */ ├── ngx_string.c ├── ngx_string.h /* 時間獲得與管理功能 */ ├── ngx_times.c └── ngx_times.h /* 其他文件 */ ├── ngx_resolver.c ├── ngx_resolver.h ├── ngx_sha1.h ├── ngx_spinlock.c ├── ngx_crypt.c ├── ngx_crypt.h

event 事件驅動模型結構

        event 目錄里面包括1種子目錄 module 和1些文件,除 module 子目錄,其他文件提供了事件驅動模型相干數據結構的定義、初始化、事件接收、傳遞、管理功能和事件驅動模型調用功能。module 子目錄里面的源碼實現了Nginx 支持的事件驅動模型:AIOepollkqueueselect/dev/pollpoll 等事件驅動模型;

. ├── modules │   ├── ngx_aio_module.c /* AIO 事件驅動模型 */ │   ├── ngx_devpoll_module.c /* dev/poll 事件驅動模型 */ │   ├── ngx_epoll_module.c /* epoll 事件驅動模型 */ │   ├── ngx_eventport_module.c /* 事件驅動模型端口 */ │   ├── ngx_kqueue_module.c /* kqueue 事件驅動模型 */ │   ├── ngx_poll_module.c /* poll 事件驅動模型 */ │   ├── ngx_rtsig_module.c /* rtsing 事件驅動模型 */ │   ├── ngx_select_module.c /* Linux 平臺下的 select 事件驅動模型 */ │   └── ngx_win32_select_module.c /* Win32 平臺下的 select 事件驅動模型 */ ├── ngx_event_accept.c ├── ngx_event_busy_lock.c ├── ngx_event_busy_lock.h ├── ngx_event.c ├── ngx_event_connect.c ├── ngx_event_connect.h ├── ngx_event.h ├── ngx_event_mutex.c ├── ngx_event_openssl.c ├── ngx_event_openssl.h ├── ngx_event_openssl_stapling.c ├── ngx_event_pipe.c ├── ngx_event_pipe.h ├── ngx_event_posted.c ├── ngx_event_posted.h ├── ngx_event_timer.c └── ngx_event_timer.h 1 directory, 26 files

http 模塊結構

        http 目錄和 event 目錄1樣,通用包括了模塊實現源碼的 module 目錄文件和1些結構定義、初始化、網絡連接建立、管理、關閉,和數據報解析、服務器組管理等功能的源碼文件。module 目錄文件實現了HTTP 模塊的功能。

. ├── modules ├── ngx_http_busy_lock.c ├── ngx_http_busy_lock.h ├── ngx_http.c ├── ngx_http_cache.h ├── ngx_http_config.h ├── ngx_http_copy_filter_module.c ├── ngx_http_core_module.c ├── ngx_http_core_module.h ├── ngx_http_file_cache.c ├── ngx_http.h ├── ngx_http_header_filter_module.c ├── ngx_http_parse.c ├── ngx_http_parse_time.c ├── ngx_http_postpone_filter_module.c ├── ngx_http_request_body.c ├── ngx_http_request.c ├── ngx_http_request.h ├── ngx_http_script.c ├── ngx_http_script.h ├── ngx_http_spdy.c ├── ngx_http_spdy_filter_module.c ├── ngx_http_spdy.h ├── ngx_http_spdy_module.c ├── ngx_http_spdy_module.h ├── ngx_http_special_response.c ├── ngx_http_upstream.c ├── ngx_http_upstream.h ├── ngx_http_upstream_round_robin.c ├── ngx_http_upstream_round_robin.h ├── ngx_http_variables.c ├── ngx_http_variables.h └── ngx_http_write_filter_module.c 1 directory, 32 files

Nginx 源碼的模塊化結構

        根據各模塊的功能,可把 Nginx 源碼劃分為以下幾種功能,以下圖所示:


  • 核心模塊功能:為其他模塊提供1些基本功能:字符串處理、時間管理、文件讀寫等功能;
  • 配置解析:主要包括文件語法檢查、配置參數解析、參數初始化等功能;
  • 內存管理:內存池管理、同享內存的分配、緩沖區管理等功能;
  • 事件驅動:進程創建與管理、信號接收與處理、所有事件驅動模型的實現、高級 IO 等功能;
  • 日志管理:毛病日志的生成與管理、任務日志的生成與管理等功能;
  • HTTP 服務:提供 Web 服務,包括客戶度連接收理、客戶端要求處理、虛擬主機管理、服務器組管理等功能;
  • Mail 服務:與 HTTP 服務類似,但是增加了郵件協議的實現;

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久国产精品久久国产精品 | 亚洲成人娱乐网 | 日韩欧美一区二区三区 | 国内精品一区二区三区 | 最近中文字幕无吗免费视频 | 日本免费乱人伦在线观看 | www.中文字幕在线观看 | 美国私人vps一夜爽毛片免费 | 国产女人视频免费观看 | 亚洲午夜免费视频 | 射在线 | 中文精品99久久国产 | 国产精品亚洲一区二区三区 | 999av视频| 色自拍偷拍 | 久久精品免费观看 | 国产日韩欧美亚洲综合在线 | 亚洲色图欧美 | 国产女人视频免费观看 | 另类图片 亚洲 校园 小说区 | 最近中文字幕免费在线看 | 2020自拍偷区亚洲综合图片 | 爱爱小视频日本 | 在线观看av网站永久 | 爱爱视频免费网站 | 欧美日韩高清观看一区二区 | 久久精品一区二区三区资源网 | 天天综合网天天做天天受 | 欧美精品三区 | 久久国产精品一国产精品 | 成人视屏在线 | 最近的中文字幕视频大全高清 | 欧美视频在线观看xxxx | 成人免费体验区福利云点播 | 久久久久久一级毛片免费无遮挡 | 精品乱人伦一区二区 | 久久久久久国产精品视频 | 日本免费一区二区三区最新vr | 亚洲天码中文字幕第一页 | 欧美极品另类 | 91久久夜色精品 |