《深入理解Nginx:模块开发与架构解析》一3.1 如何调用HTTP模块-阿里云开发者社区

开发者社区> 华章计算机> 正文

《深入理解Nginx:模块开发与架构解析》一3.1 如何调用HTTP模块

简介: 本节书摘来自华章出版社《深入理解Nginx:模块开发与架构解析》一书中的第3章,第3.1节,作者 陶辉,更多章节内容可以访问云栖社区“华章计算机”公众号查看
+关注继续查看

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模块中处理。这种分发策略是多样化的,其中最常见的是根据请求的URI和nginx.conf里location配置项的匹配度来决定如何分发(本章的例子正是应用这种分发策略,在第10章中会介绍其他分发策略)。HTTP模块在处理请求的结束时,大多会向客户端发送响应,此时会自动地依次调用所有的HTTP过滤模块,每个过滤模块可以根据配置文件决定自己的行为。例如,gzip过滤模块根据配置文件中的gzip on|off来决定是否压缩响应。HTTP处理模块在返回时会将控制权交还给HTTP框架,如果在返回前设置了subrequest,那么HTTP框架还会继续异步地调用适合的HTTP模块处理子请求。

image

开发HTTP模块时,首先要注意的就是HTTP框架到具体的HTTP模块间数据流的传递,以及开发的HTTP模块如何与诸多的过滤模块协同工作(第10章、第11章会详细介绍HTTP框架)。下面正式进入HTTP模块的开发环节。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
https 对 json空对象解析的影响
2017年11月24日09:56:01 记录一个问题: PHP返回json给APP(安卓, fastjson) 其中一个值是空对象  json_encode( [ 'aaa' => new stdClass ] ); 在 http 下安卓解析后是:  {"aaa":{}} 在 https ...
868 0
MongoDB mmapv1存储引擎解析
mongodb的mongod服务管理一个数据目录,可包含多个DB,每个DB的数据单独组织,本文主要介绍mmapv1存储引擎的数据组织方式。 Database 每个Database(DB)由一个.ns文件及若干个数据文件组成 $ll mydb.* -rw------- 1 ydzhang
4573 0
原创:使用Qt Creator作为Linux IDE,实现Nginx和Redis源码编译和gdb断点调试(★★★★★)
原创:使用Qt Creator作为Linux IDE,实现Nginx和Redis源码编译和gdb断点调试(★★★★★)
18 0
模块开发中一点疑惑?
Q:我想做一个跟博客一样。左边是类别列表,点击某类别后,右边显示该类别的所有文章标题列表,然后再点击文章标题就可以查看文章。要实现这样的功能,左边的列表和显示文章放同一个模块中,那不好吧?难道类别列表和右边文章显示都分别做成模块?到底如何做才好。
468 0
httpclient后台接口调用
第一步:新建marven项目,并配置marven 4.0.0 com.sunjian httpclientsutil 0.0.1-SNAPSHOT war org.
955 0
解决ArcEngine开发程序“假死”现象
在GIS数据处理中,数据量大是一个非常伤脑筋的问题。最近,在写一个CAD注记转Shapefile文件时,又遇到这个问题。   曾经处理一次数据,达130万个点,即测试区域内的栅格转成点全部处理,程序是写好了,但速度之慢啊,关键问题是处理到一半报奇怪的错误,最后只好将数据分成6份,去实验室开了6台机子来分别处理,最后合成在一起。
961 0
Okhttp3源码解析(1)-OkHttpClient分析
前言 上篇文章我们讲了Okhttp的基本用法,今天根据上节讲到请求流程来分析源码,那么第一步就是实例化OkHttpClient对象,所以我们今天主要分析下OkHttpClient源码! 初始化-构造方式 创建 OkHttpClient实例的两种方式 1.
2596 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载