Nginx 处理Http请求头部流程

处理链接

1:首先内核经过请求的三次握手成功后通过操作系统的负载均衡算法选择一个监听的worker进程

2:worker进程通过epoll事件机制epoll-wait方法返回一个链接句柄

3:事件模块epoll分配链接内存池 connection_pool_size:512字节

4:事件模块回调Http模块ngx_http_init_connection方法 并且添加超时定时器

5:事件模块epoll切换其它请求链接

6:当客户端发送真正的请求报文的时候,epoll事件模块接收到请求数据后http模块ngx_http_wait_request_handler从链接内存池分配内存存放请求报文 1k

处理请求

未完待续...

原文地址:https://www.cnblogs.com/jackey2015/p/11730091.html

时间: 2024-11-13 08:55:26

Nginx 处理Http请求头部流程的相关文章

Nginx 处理Http请求简单流程

L45 1:三次握手后 系统内核收到请求根据端口负载均衡的分配到某个worker 2:nginx 会分配一个512byte链接内存池 3:初始化nginx的http模块并等待用户请求,假设用户在client_header_timeout指令设置的值内还没再次请求,则链接超时 4:处理用户发送请求(处理链接和处理请求还是有很大区别的,以下是处理请求操作需要校验请求头等)  解释下large_client_header_buffers指令设置的含义:4 8k 并不是48k  nginx先会分配8k内

nginx的请求接收流程(二)

在ngx_http_process_request_line函数中,解析完请求行之后,如果请求行的uri里面包含了域名部分,则将其保持在请求结构的headers_in成员的server字段,headers_in用来保存所有请求头,它的类型为ngx_http_headers_in_t: [cpp] view plaincopy <span style="font-size: 18px; ">typedef struct { ngx_list_t                

nginx的请求接收流程(一)

今年我们组计划写一本nginx模块开发以及原理解析方面的书,整本书是以open book的形式在网上会定时的更新,网址为http://tengine.taobao.org/book/index.html.本书分析的nginx源码版本为1.2.0,环境为linux,事件处理模型为epoll,大部分分析流程都基于以上假设.我会负责其中一些章节的编写,所以打算在这里写一系列我负责章节内容相关的文章(主要包括nginx各phase模块的开发,nginx请求的处理流程等).本篇文章主要会介绍nginx中请

【Nginx】事件驱动框架处理流程

ngx_event_core_module模块的ngx_event_process_init方法对事件模块做了一些初始化.其中包括将"请求连接"这样一个读事件对应的处理方法(handler)设置为ngx_event_accept函数,并将此事件添加到epoll模块中.当有新连接事件发生时,ngx_event_accept就会被调用.大致流程是这样: worker进程在ngx_worker_process_cycle方法中不断循环调用ngx_process_events_and_time

【Nginx】HTTP请求的11个处理阶段

Nginx将一个HTTP请求分成多个阶段,以模块为单位进行处理.这样做的好处是使处理过程更加灵活.降低耦合度.HTTP框架将处理分成了11个阶段,各个阶段以流水线的方式处理请求.这11个HTTP阶段如下所示: typedef enum { NGX_HTTP_POST_READ_PHASE = 0, // 接收到完整的HTTP头部后处理的阶段 NGX_HTTP_SERVER_REWRITE_PHASE, // URI与location匹配前,修改URI的阶段,用于重定向 NGX_HTTP_FIND

nginx学习笔记七(nginx HTTP框架的执行流程)

之前已经介绍过nginx的事件框架.那么,对于client发出的一个http的请求,nginx的http框架是如何一步步解析这个http请求?http框架又是如何和之前介绍过得epoll事件模块结合起来的,下面来简要介绍下. 注:我手头上的nginx工程是nginx-1.9.14的,与<深入理解nginx>的版本不一致,在http框架这块的代码上也有着较大的区别. 一.ngx_http_init_connection 在http框架初始化的时候(参见<深入理解nginx>第10章)

Nginx的架构及工作流程

NGINX是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器.NGINX以其高性能,稳定性,丰富的功能集,简单的配置和低资源消耗而闻名,也是为解决C10K问题而编写的服务器之一.本文主要介绍Nginx的架构及工作流程. 一.Nginx的架构如下图 1.nginx启动后会有一个master进程和多个worker进程(woeker进程数量可配置,一般设置与机器的核心数一致),master进程负责管理worker进程(接收外界信号,发送信号到各worker进程

Nginx简单的请求分发跟负载均衡----分发到多台机器

需求: 请求http://10.3.10.99:8000分发到http://10.3.10.22:8089/time_discernhttp://10.3.10.99:8089/time_discern •? Nginx集群其实是:虚拟主机+反向代理+upstream分发模块组成的虚拟主机:接受和响应请求反向代理: 带?户去数据服务器拿数据upstream: 告诉Nginx去哪个数据服务器拿数据•? 数据?向1)虚拟主机接受?户请求2)虚拟主机去找反向代理3) 反向代理让去找upstream4)

Nginx如何处理一个请求

看了下nginx的官方文档,其中nginx如何处理一个请求讲解的很好,现在贴出来分享下.Nginx首先选定由哪一个虚拟主机来处理请求.让我们从一个简单的配置(其中全部3个虚拟主机都在端口*:80上监听)开始: 1 server { 2 listen 80; 3 server_name example.org www.example.org; 4 ... 5 } 6 7 server { 8 listen 80; 9 server_name example.net www.example.net;