nginx一般的http请求建立处理,发送函数调用,以及各个phase的状态(等完善)

来源:互联网 发布:阿里云 重装系统 编辑:程序博客网 时间:2024/05/09 20:29

 

调用关系太复杂了,每个函数里面都做了很多事情,详细的过程有空再写。

 

// 当前连接过来时:ngx_http_init_connection会被调用

ngx_http_init_connection->ngx_http_init_request->ngx_http_process_request_line->

ngx_http_process_request_headers->ngx_http_process_request->ngx_http_handler->

ngx_http_core_run_phases->ngx_http_core_find_config_phase(会更新content handler)->

ngx_http_core_content_phase->handler->(会调用两个来完成请求ngx_http_send_header与ngx_http_output_filter)

 

// 发送响应头注意,最后一个ngx_http_header_filter会调用ngx_http_write_filter来完成响应头的发送

ngx_http_send_header->ngx_http_top_header_filter->***我们的fileter***->ngx_http_header_filter->

ngx_http_write_filter->ngx_send_chain(send_chain)即ngx_writev_chain

 

// 发送响应体

ngx_http_output_filter->****我们的filter****->ngx_http_write_filter->ngx_send_chain(send_chain)即ngx_writev_chain

每个阶段都可能有多个handler,phase_engine中集中保存,而phase中分类保存
按照顺序一个阶段一个阶段的调用解析
phase_engine
NGX_HTTP_POST_READ_PHASE
checker : ngx_http_core_generic_phase
handler : 与 phase中每个handler对应
next : 指向下一个phase,即NGX_HTTP_SERVER_REWRITE_PHASE
NGX_HTTP_SERVER_REWRITE_PHASE
checker : ngx_http_core_generic_phase
handler : 与 phase中每个handler对应
next : 指向下一个phase,即NGX_HTTP_FIND_CONFIG_PHASE
NGX_HTTP_FIND_CONFIG_PHASE
checker : ngx_http_core_find_config_phase
handler : 无
next : 无
NGX_HTTP_REWRITE_PHASE
checker : ngx_http_core_generic_phase
handler : 与 phase中每个handler对应
next : 指向下一个phase,即NGX_HTTP_POST_REWRITE_PHASE
NGX_HTTP_POST_REWRITE_PHASE(如果使用rewrite)
checker : ngx_http_core_post_rewrite_phase
handler : 无
next : 指向NGX_HTTP_FIND_CONFIG_PHASE
NGX_HTTP_PREACCESS_PHASE
checker : ngx_http_core_generic_phase
handler : 与 phase中每个handler对应
next : 指向下一个phase,即NGX_HTTP_ACCESS_PHASE
NGX_HTTP_ACCESS_PHASE(n多加了一)
checker : ngx_http_core_access_phase
handler : 与 phase中每个handler对应
next : 指向下一个phase,即NGX_HTTP_TRY_FILES_PHASE(跳过了NGX_HTTP_POST_ACCESS_PHASE)
NGX_HTTP_POST_ACCESS_PHASE(如果使用了access)
checker : ngx_http_core_post_access_phase
handler : 无
next : 指向下一个phase,即NGX_HTTP_TRY_FILES_PHASE
NGX_HTTP_TRY_FILES_PHASE
checker : ngx_http_core_try_files_phase
handler : 无
next : 无
NGX_HTTP_CONTENT_PHASE
checker : ngx_http_core_content_phase
handler : 与 phase中每个handler对应
next : 指向下一个phase,即NGX_HTTP_LOG_PHASE
NGX_HTTP_LOG_PHASE
checker : ngx_http_core_generic_phase
handler : 与 phase中每个handler对应
next : 指向下一个phase,为空的