nginx源码分析-ngx_http_phases说明
来源:互联网 发布:朱炫 知乎 编辑:程序博客网 时间:2024/06/07 01:53
- auth:农夫-Ben
- email:szjava#126.com(请把#换成@)
- blog:http://blog.csdn.net/zll_liang
当接收到一个http请求的时候将解析其头部和body到ngx_http_request_t,接着将进行大量的phase操作。
一个http请求分11个phase, 处理是有顺序的,NGX_HTTP_POST_READ_PHASE为第一个,一个接着一个处理。
typedef enum { //读取请求phase NGX_HTTP_POST_READ_PHASE = 0, //第一个 //开始处理 //这个阶段主要是处理全局的(server block)的rewrite NGX_HTTP_SERVER_REWRITE_PHASE, //这个阶段主要是通过uri来查找对应的location。然后将uri和location的数据关联起来 NGX_HTTP_FIND_CONFIG_PHASE, //这个主要处理location的rewrite。 NGX_HTTP_REWRITE_PHASE, //post rewrite,这个主要是进行一些校验以及收尾工作,以便于交给后面的模块。 NGX_HTTP_POST_REWRITE_PHASE, //比如流控这种类型的access就放在这个phase,也就是说它主要是进行一些比较粗粒度的access。 NGX_HTTP_PREACCESS_PHASE, //这个比如存取控制,权限验证就放在这个phase,一般来说处理动作是交给下面的模块做的.这个主要是做一些细粒度的access。 NGX_HTTP_ACCESS_PHASE, //当上面的access模块得到access_code之后就会由这个模块根据access_code来进行操作 NGX_HTTP_POST_ACCESS_PHASE, //try_file模块,也就是对应配置文件中的try_files指令。 NGX_HTTP_TRY_FILES_PHASE, //内容处理模块,我们一般的handle都是处于这个模块,比如说模块扩展也将是该phase, 默认调用ngx_http_autoindex_module.c中的ngx_http_autoindex_handler handler NGX_HTTP_CONTENT_PHASE, //log模块 NGX_HTTP_LOG_PHASE} ngx_http_phases;
在ngx_http_core_module.c文件中有一处理函数来处理这些phases,直到输出过滤到客户端。
voidngx_http_core_run_phases(ngx_http_request_t *r){ ngx_int_t rc; ngx_http_phase_handler_t *ph; ngx_http_core_main_conf_t *cmcf; cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); ph = cmcf->phase_engine.handlers; while (ph[r->phase_handler].checker) { //循环phases rc = ph[r->phase_handler].checker(r, &ph[r->phase_handler]); if (rc == NGX_OK) { return; } }}
- nginx源码分析-ngx_http_phases说明
- Nginx 的ngx_http_phases
- nginx源码分析-各模块说明
- nginx源码分析-ngx_cycle_s结构说明
- nginx源码分析
- Nginx源码分析-数组
- nginx源码分析-链表
- Nginx源码分析链接
- 关于nginx源码分析
- nginx源码分析
- nginx源码分析-链表
- nginx源码分析
- Nginx源码分析
- Nginx源码分析链接
- Nginx源码分析一
- Nginx源码分析1
- Nginx源码分析-ngx_htttp_footer_filter_module
- Nginx 源码结构分析
- 高仿QQ2012界面-支持Aero特效和界面动画
- Eclipse快捷键一览
- 如何刷新弹出窗口父窗口,关闭弹出窗口
- 和菜鸟一起学linux之container_of实例
- getlasterr 错误码和错误原因
- nginx源码分析-ngx_http_phases说明
- C++中的接口继承和实现继承
- 如何让整个页面内容居中?
- 解压和生成 system.img&data.img ( yaffs2格式)
- 关于青春
- fopen_s打开文件方式的选择
- VC6.0 中如何对齐零乱的代码
- cxf 创建webservice
- C#中使用DateTime.ToString()转换输出日期