专栏首页软件开发 -- 分享 互助 成长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 条评论
登录 后参与评论

相关文章

  • Activity的生命周期

    前言: 接触Android快两个礼拜了,虽然已开发了一个非常简单的app,但却还没有理清Activity的生命周期,自然对它里面的几种方法的含义没有彻底清楚的认...

    用户1215536
  • 工厂方法模式

    一、相关介绍 1、工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 2、UML图 ? 3、所属类别:创建...

    用户1215536
  • nginx的域名解析

    ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n)

    用户1215536
  • 贼好用的Java工具类库,GitHub星标13k+,很是厉害!

    Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。

    搜云库技术团队
  • AJAX

     AJAX是异步的JavaScript和XML,是一种用于创建快速动态网页的技术,使用AJAX可以更新部分网页内容,是非常方便使用的

    用户3159471
  • 为了更好的使用OKHttp—架构与源码分析

    今儿个咱们就来看看到底okhttp内部是如何实现的,这篇文章咱从okhttp整体框架方面出发,解析okhttp的源码。

    蒋老湿
  • Dubbo集群容错模式之Broadcast实现

                                                    图1 Dubbo的BroadcastClusterInvoker...

    克虏伯
  • 触摸界面的设计

    触摸界面主要是指移动设备,区分于pc。触摸界面按照屏幕大小主要是分为三大类,最小的用户最多的是手机,显示尺寸从3.5-7寸,再大一点是7-10寸,最大的为10-...

    RobinsonZhang
  • 为什么我推荐Nginx作为后端服务器代理

    我们真实的服务器不应该直接暴露到公网上去,否则更加容易泄露服务器的信息,也更加容易受到攻击。一个比较“平民化”的方案是使用Nginx反向代理它。使用Nginx反...

    码农小胖哥
  • 2017年12月编程语言排行榜

    The programming languages Kotlin and C seem to be the only candidates to become ...

    程序员的酒和故事

扫码关注云+社区

领取腾讯云代金券