11-12 nginx
http框架初始化
http框架
由核心模块ngx_http_module、两个http模块ngx_http_core_module、ngx_http_upstream_module构成
http框架要完成那些工作
1.处理所有http块配置项
2.监听web端口处理连接时间、可读时间、可写事件等
3.有状态机来分析接收到的TCP字符是否是完整的HTTP包
4.根据接收到的URI和HTTP头按照所在阶段准确分发到某一个http模块,从而调用它的回调方法来处理请求
5.向HTTP模块提供必要工具方法,可以处理网络I/O、磁盘I/O
6.提供upstream机制帮助http模块访问第三方服务
7.提供subrequest机制帮助http模块实现子请求
介入content阶段两种方式(381页)
如果希望方法应用于所有用户请求,应该在ngx_http_module_t接口的postconfiguration方法宏,向ngx_http_core_main_conf_t结构体的phases[NGX_HTTP_CONTENT_PHASE]动态数组中添加ngx_http_handler_pt处理方法
如果希望方法仅应用于URL匹配的某些用户请求,应该在一个location下配置项的回调方法中,把ngx_http_handler_pt方法设置到ngx_http_core_loc_conf_t结构体的handler中
http是如何介入事件处理的
ngx_http_block(配置项http的解析方法)
ngx_http_optimize_servers
ngx_http_init_listening
ngx_http_add_listening(将监听端口的handler设置为ngx_http_init_connection)
ngx_http_init_connection(新连接建立后,调用监听端口的handler, ls->handler(c))
http框架的初始化流程(382页)