nginx_http_phases
来源:互联网 发布:java调用支付宝接口 编辑:程序博客网 时间:2024/05/17 20:28
当接收到一个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,直到输出过滤到客户端。
- void
- ngx_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_http_phases
- Java内部类
- 当ScrollView手势和super view手势冲突的解决方法
- SQL Server 2008、SQL Server 2008R2 自动备份数据库
- eclipse和myeclipse区别
- 经典String str = new String("abc")内存分配问题
- nginx_http_phases
- uIP的udp实现
- ASP.NET v4.0
- 完全搞懂傅里叶变换和小波(1)——总纲
- 杨毅:不够优秀就不要腆着脸继续占便宜
- iphone开发之AppDelegate中的方法和作用
- shell脚本的简单练习
- CentOS设置默认启动命令行(不启动图形界面)
- Mysql,Date类型数据分类查询