Nginx是我们日常使用非常多的一款服务器。

Nginx的源码写的非常漂亮,是c语言学习和进阶的最好的学习资料。我们这里分析的是1.13.1的版本。

一、源码目录


下面我们先看下Nginx的目录结构:

Nginx的源码主要分布在src/目录下,而src/目录下主要包含三部分比较重要的模块。

core:包含了Nginx的最基础的库和框架。包括了内存池、链表、hashmap、String等常用的数据结构。
event:事件模块。Nginx自己实现了事件模型。而我们所熟悉的Memcached是使用了Libevent的事件库。自己实现event会性能和效率方便更加高效。
http:实现HTTP的模块。实现了HTTP的具体协议的各种模块,该部分内容量比较大。
二、Nginx进程结构
Nginx是一款多进程的软件。Nginx启动后,会产生一个master进程和N个工作进程。其中nginx.conf中可以配置工作进程的个数:

worker_processes  1;
多进程模块有一个非常大的好处,就是不需要太多考虑并发锁的问题。

我们常见的软件Memcached就和Nginx相反,就是典型的多线程模型的c语言软件。

三、Nginx架构图


整体的Nginx架构图如下:

四、Nginx模块设计


高度模块化的设计是Nginx的架构基础。Nginx服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。


转载地址:

1.https://initphp.blog.csdn.net/article/details/50582568

2.https://blog.csdn.net/wangmanjie/article/details/52793847?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.control

Nginx源码分析 - 初探Nginx的架构(01)相关推荐

  1. 【Nginx源码分析】Nginx配置文件解析(一)

    运营研发团队 李乐 配置文件是nginx的基础,对于学习nginx源码甚至开发nginx模块的同学来说更是必须深究.本文将从源码从此深入分析nginx配置文件的解析,配置存储,与配置查找. 看本文之前 ...

  2. Nginx 源码分析

    1.工程 ngx_conf_file.c ngx_connection.c ngx_cycle.c ngx_file.h ngx_module.c ngx_open_file_cache.h ngx_ ...

  3. Nginx源码分析:epoll事件处理模块概述

    nginx源码分析 nginx-1.11.1 参考书籍<深入理解nginx模块开发与架构解析> 事件处理模块概述 Nginx的高效请求的处理依赖于事件管理机制,本次默认的场景是Linux操 ...

  4. Nginx源码分析:惊群处理与负载均衡

    nginx源码分析 nginx-1.11.1 参考书籍<深入理解nginx模块开发与架构解析> Nginx的惊群处理与负载均衡概述 当Nginx工作在master/worker模式下时,就 ...

  5. Nginx源码分析:核心数据结构ngx_cycle_t与内存池概述

    nginx源码分析 nginx-1.11.1 参考书籍<深入理解nginx模块开发与架构解析> 核心数据结构与内存池概述 在Nginx中的核心数据结构就是ngx_cycle_t结构,在初始 ...

  6. Nginx源码分析:master/worker工作流程概述

    nginx源码分析 nginx-1.11.1 参考书籍<深入理解nginx模块开发与架构解析> Nginx的master与worker工作模式 在生成环境中的Nginx启动模式基本都是以m ...

  7. Nginx源码分析:启动流程

    nginx源码分析 nginx-1.11.1 参考书籍<深入理解nginx模块开发与架构解析> nginx简介 Nginx的作为服务端软件,表现的主要特点是更快.高扩展.高可靠性.低内存消 ...

  8. nginx源码分析之内存池与线程池丨nginx的多进程网络实现

    nginx源码分析之内存池与线程池 1. nginx的使用场景 2. nginx源码 内存池,线程池,日志 3. nginx的多进程网络实现 视频讲解如下,点击观看: [Linux后台开发系统]ngi ...

  9. Nginx源码分析链接

    nginx-0.8.38源码探秘:http://blog.csdn.net/ccdd14/article/details/5872312 nginx源码分析: http://blog.sina.com ...

  10. nginx源码分析—内存池结构ngx_pool_t及内存管理

    本博客( http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究.学习内容所做的笔记,欢迎广大朋友指正! Content 0.序 1.内存池结构 1.1 ...

最新文章

  1. 3116 高精度练习之加法
  2. HP 打印机驱动安装Return code:1603解决办法
  3. 如何自学python数据分析-Python学习干货 |如何用Python进行数据分析?
  4. 背景建模与前景检测3(Background Generation And Foreground Detection Phase 3)
  5. 【连载】第一章:亚洲-台湾(1)
  6. Python入门级3-字典 if while for
  7. leetcode python3 简单题112. Path Sum
  8. css3 Gradient背景
  9. Java三种连接池(druid、c3p0、dbcp)
  10. wifi×××破解的密码查看方式
  11. 谷歌服务安装包_安卓手机安装谷歌服务框架和Google Play傻瓜式教程 100%好用
  12. 面试求职:数据库常见面试题(数据库优化思路)
  13. Android:JNI调用C++自定义类的详细方法
  14. TwinCAT 3 EtherCAT控制伺服
  15. 阿里云服务器 免费获取SSL证书 配置HTTPS安全访问
  16. deepin[idea添加桌面]
  17. 什么样的人适合学web前端?
  18. C语言计算抛硬币问题
  19. P2E引发热潮,从代币经济学、元宇宙和风投等角度看链游行业将走向何方?
  20. Android API升级到30遇到的问题

热门文章

  1. 【安装包】android-studio
  2. IDEA复制某个类的包名路径
  3. 【UOJ #351】新年的叶子(树的直径,期望)
  4. 20165333 2017-2018-2《Java程序设计》课程总结
  5. JS基础_自增和自减
  6. cmd窗口连接mongodb服务端
  7. SELECT中的多表连接
  8. 2012春季ACM内部测试赛3
  9. 学英语怎样才能事半功倍
  10. 网管学习日记-ospf认证