nginx处理http请求完整流程

    在nginx的worker进程启动后,便阻塞在epoll_wait函数(ngx_epoll_process_events),等待http请求的到来,那么当一个http请求到来之时,nginx是如何作出相应的呢?下面介绍该过程。
    首先,在ngx_event_process_init函数中,可看到rev->handler被初始化为函数ngx_event_accept,因此,在函数 ngx_epoll_process_events中,对rev->handler的调用会调到ngx_event_accept函数。该函数会调用ls->handler(c),这个handler又是在哪里初始化的呢?该函数是在ngx_http_add_listening中进行初始化的,具体语句为:ls->handler= ngx_http_init_connection,因此最终会在ngx_http_init_connection中,一步一步调用至ngx_http_core_run_phases,该函数中,会遍历所有的11个阶段,若该阶段有挂载函数,则会调用该函数。
                具体而言,以ngx_http_static_module为例,该模块挂载在 NGX_HTTP_CONTENT_PHASE中,因此当NGX_HTTP_CONTENT_PHASE到来时,会调用ngx_http_static_handler函数,该函数中会调用ngx_http_send_header,以及
ngx_http_output_filter函数,这两个函数最终会调用ngx_http_write_filter函数,在该函数中会调用ngx_linux_sendfile_chain函数发送数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值