《深入理解Nginx:模块开发与架构解析》一3.1 如何调用HTTP模块
3.1 如何调用HTTP模块
在开发HTTP模块前,首先需要了解典型的HTTP模块是如何介入Nginx处理用户请求流程的。图3-1是一个简化的时序图,这里省略了许多异步调用,忽略了多个不同的HTTP处理阶段,仅标识了在一个典型请求的处理过程中主要模块被调用的流程,以此帮助读者理解HTTP模块如何处理用户请求。完整的流程将在第11章中详细介绍。
从图3-1中看到,worker进程会在一个for循环语句里反复调用事件模块检测网络事件。当事件模块检测到某个客户端发起的TCP请求时(接收到SYN包),将会为它建立TCP连接,成功建立连接后根据nginx.conf文件中的配置会交由HTTP框架处理。HTTP框架会试图接收完整的HTTP头部,并在接收到完整的HTTP头部后将请求分发到具体的HTTP模块中处理。这种分发策略是多样化的,其中最常见的是

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何高效的开发移动应用
随着移动互联网越来越深入到工作与生活之中,开发移动应用就成为众多政府、企事业单位的必然选择。但是,开发移动应用并不是想象中的那么简单,特别是当涉及到架构复杂、更新频繁、与组织后端数据集成度高的移动应用开发时,其难度将倍增。 那么,组织应该如何高效的开发移动应用呢?国信灵通市场研究专家给出了以下几个建议: 一、做好开发前的前期准备 在移动应用开发之前,前期准备是非常重要的,充分而准确的前期准备并不会浪费组织宝贵的开发时间,相反,在开发上一些重要问题的正确选择会让开发工作变得事半功倍。具体来说,这些重要问题包括: 平台选择:目前主流的移动操作平台是iOS、Android、Win8,对于开发者而言,一个移动平台的意义,并不只是一个操作系统而已,它还包括了与之相联系的整个生态环境。ios平台拥有更好、更统一的应用体验,而且iOS用户拥有更高的APRU值(每户每月平均收入),但属于封闭系统;Android平台开放性高、用户量更大,但是碎片化现象严重,会大幅推升开发与维护成本。组织在进行应用开发时,必须对选择对应的平台,即使要进行全平台开发,也需要对各平台开发的优先级进行选择。 当然,在做平台选择...
- 下一篇
如何正确的阅读源代码?
写完「你也可以像 Prisma 一样渲染图像」之后,有读者提了这样一个问题: 我猜您平时应该有阅读开源项目的源码,好的开源软件或者框架,动辄数万行的源码,虽说是宝藏,但我看源码一直不得要领,投入时间不少但收获甚微,请教下: 您阅读源码的关注点一般有哪些? 您看源码有没有什么方法论呢,如何抓住重点下手?有时面对优秀的开源框架,想学习,我甚至都不知从哪看起。 关于这个问题,我说两句。 阅读优秀的源代码是软件工程师提高自己编程能力和学习开源框架的最佳手段之一。作为一名运动员,除了持续的刻意练习,还需要观摩大量对手的比赛视频。作为一名小说家,除了笔耕不辍,还需要阅读大量的其他作家的伟大作品。当然,观摩和阅读不是目的,是手段。路遥在创作《平凡的世界》之前读了大量的「名著」,然后,他把所有尊敬的作家都安放在远方历史为他们准备的「先圣词」中,让他们各自光芒四射,照耀大地,然后开始创作百万巨著《平凡的世界》。照耀你的世界的光芒,应该是自己发出的。 程序员亦是如此。在编程的路上,有无数的大师写出了伟大的代码和软件,去学习他们的编程技巧和技术风格,取其精华,去其糟粕,最后完成自己的作品。2005年左右我有...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果