专栏首页软件开发 -- 分享 互助 成长nginx源码中upstream的主要流程

nginx源码中upstream的主要流程

upstream 即上游的意思,是一个想对到概念,从客户端到中间的网络链路到服务器到链路中,可以将越接近客户到设备越理解成下游,相反到为上游,所以如果只有一个upstream,可以将其为理解成转发客户到请求到服务器,然后响应服务器转发到客户端到过程,源码主要流程如下:

1、创建upstream

ngx_http_upstream_init

删除超时定时器

创建到上游到请求

挂接一些处理函数,包含第6步中要用到的请求结束后upstream到清理函数

2、建立与上游的连接

ngx_http_upstream_connect

创建socket、connetion,发起tcp建连请求,使用epoll发送请求,挂接upstream的handler,包括第4、5步中处理上游应答的处理函数

3、发送到上游的请求

ngx_http_upstream_send_request

4、处理上游的响应头

process_header 解析请求头

ngx_http_upstream_process_headers处理请求头

5、处理上游的响应体

ngx_http_upstream_process_body_in_memory

如果需要转发相应体,可以自己实现input_filter,若不自己实现则使用默认的ngx_http_upstream_non_buffered_filter

(1)upstream与上游之间网速很快时,使用大内存甚至文件,缓存上游大请求

(2)upstream与下游之间网速很快时,使用固定大小内存,不需要过多缓存请求

ngx_http_upstream_send_response中通过判断

buffering决定走上述的那个流程

6、结束upstream 请求

ngx_http_upstream_cleanup

主要释放一些upstream使用的资源

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • vivo AI计算平台 Kubernetes集群Ingress网关实践

    vivo 人工智能计算平台小组从 2018 年底开始建设 AI 计算平台至今,已经在 kubernetes 集群、以及离线的深度学习模型训练等方面,积累了众多宝...

    深度学习与Python
  • 接入层Nginx架构及模块介绍分享

    1)帮助大家对Nginx有一定的认识 2)熟悉Nginx有哪些应用场景 3)熟悉Nginx特点和架构模型以及相关流程 4)熟悉Nginx定制化开发的几种模...

    Lucien168
  • Nginx code 状态码说明

    一个普通的http请求处理流程,如上图所示: A -> client端发起请求给nginx B -> nginx处理后,将请求转发到uwsgi,并等待结果 C ...

    后端技术探索
  • Nginx code 状态码说明

    最近了解下Nginx的Code状态码,在此简单总结下。一个http请求处理流程: ? 一个普通的http请求处理流程,如上图所示: A -> client端发起...

    洗尽了浮华
  • Nginx 架构——【核心流程+模块介绍】

    Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也是一个IMAP/POP3/SMTP服务器

    Java知音
  • 通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布

    前段时间顺利地把整个服务集群和中间件全部从UCloud迁移到阿里云,笔者担任了架构和半个运维的角色。这里详细记录一下通过Nginx、Consul、Upsync实...

    Throwable
  • Udp的反向代理:nginx

    在实时性要求较高的特殊场景下,简单的UDP协议仍然是我们的主要手段。UDP协议没有重传机制,还适用于同时向多台主机广播,因此在诸如多人会议、实时竞技游戏、DNS...

    陶辉
  • Nginx模块之Upstream解析

    Nginx模块一般被分成三大类:handler、filter和upstream。前面的文章系列中,读者已经了解了handler、filter。利用这两类模块,可...

    用户1263954
  • nginx反向代理和负载均衡算法介绍

    1 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker ...

    地球流浪猫

扫码关注云+社区

领取腾讯云代金券