网站首页 > 技术教程 正文
Nginx框架先对客户端建立好连接,
然后接收用户发来的http请求行,比如:方法, url等。
然后再去接收所有的header。根据这些header信息 我们才能决定选用哪些配置块,决定让http模块怎样处理请求。
我们先来看一下Nginx框架是怎样建立连接,怎样接收http请求的?
首先经过内核三次握手建立连接, 然后经过Nginx负载均衡的算法选中一个worker。
这个worker进程 会调用epoll_wait 返回刚刚建立的连接的句柄fd。
此时这个句柄上实际上是有一个读事件,根据这个读事件,Nginx发现是它监听的80端口,于是就开始accept,这是会分配内存池,前面的文章我们介绍过,Nginx的内存池分为连接内存池和请求内存池2种。这时候分配的是连接内存池,默认值是512个byte。
接下来http模块开始接管请求,accept 新连接的时候 ngx_init_connection的回调方法就会被执行了。
这时会把新建立的读事件 通过epoll_ctl添加到epoll中,并且添加一个默认60s超时的定时器。
这一条龙流程走完,Nginx事件模块就会切到其他的fd去处理了。
当一个真正的post/get请求发来的时候,实际上发来data的。事件模块的epoll_wait又会拿到这个请求了。这次的回调方法则是ngx_http_wait_request_handler,这时候需要分配内存将内核态的data读取到用户态。这里有2个问题,内存是从哪里分配的?分配多少?
答案是从高处的连接内存池上分配的,默认client_header_buffer_size是要分配1k。这里如果配置是1k,就算data只有1个字节也会分配1k,就会存在浪费。那么如果header特别大1k不够怎么办呢?
有一个配置large_client_header_buffers:4 8K
这里的意思是如果1K不够,会分配8K内存,如果8K还不 就继续分配8K 分配到32K。
在接收完URI之后,接着就要接收header,我们注意到接收header这里也有一个分配大内存large_client_header_buffers:4 8K 这里的内存和之前那个是共用的。接收完完整的header就开始标识header了。然后就把之前设置的那个60s的定时器移除了。
最后就要开始http模块的11个处理流程,到底是哪11个处理流程呢?我们明天接着看。
猜你喜欢
- 2024-10-09 面试题 HTTP及web服务相关(nginx apache)
- 2024-10-09 Nginx实现认证登录(nginx登录验证)
- 2024-10-09 Nginx 是如何处理 HTTP 头部的?(女飞行员余旭遗体头部图)
- 2024-09-08 nginx 安装教程(详解)(nginx安装与配置详解)
- 2024-09-08 学习Nginx,跟着阿里大牛走,一套精心整理的Nginx(PDF文档)
- 2024-09-08 nginx实现内外网访问限制(nginx 内网)
- 2024-09-08 nginx的多域http、https同时访问配置及http重定向https
- 2024-09-08 nginx httpstatus 408 研究(404 not found nginx是什么意思)
- 2024-09-08 Nginx完全指南--内容解析(三)(nginx 详解)
- 2024-09-08 Nginx http 强转https(http://cas.tjgl.teacheredu.cn)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)