- accept阶段(ngx_http_init_connection):
- 分配ngx_http_connection_t结构体;
- 根据fd的端口和地址,为hc->addr_conf赋值,以供后续server块查询;
- 新的fd加入epoll,设置读超时,超时时间为post_accept_timeout,设置连接可重用。
rev:ngx_http_wait_request_handler (此时没有读取任何数据。) wev:
ngx_http_empty_handler
- 首次读阶段(ngx_http_wait_request_handler):
- 分配c->buffer(cscf->client_header_buffer_size大小)用于存储客户端包头;
- recv调用接收包头;
- 创建ngx_http_request_t。
rev:ngx_http_process_request_line (循环接收请求行,解析请求行)
wev:ngx_http_empty_handler
- 请求行阶段(ngx_http_process_request_line):
- 循环recv,放入r->header_in(c->buffer);
- 解析uri,包括r->uri、r->args、r->exten;
- 请求行处理结束。
rev:ngx_http_process_request_headers; (循环接收请求头,