• nginx-proxy反向代理流程


    1.浏览器发送请求数据到nginx

    2.nginx先处理请求头,后处理请求体。

    client_header_buffer_size                 #ginx可设置客户端上传header缓冲区大小

    client_body_buffer_size                        #nginx可设置客户端上传数据缓冲区大小

    client_body_temp_path                        #缓冲区不够用向磁盘缓存大小

    client_max_body_size                        #限制上传body数据大小,在用户上传时,在http头中会标记content-length大小,以此判断。

    client_body_timeout                                #建立tcp连接后不动了的超时时间

    client_header_timeout                                #针对header的超时时间

    3.nginx在处理body请求体的过程中,可以设置client_boduy_buffer_size这个参数用来设置body缓冲区大小。

    4.proxy_request_buffering:该参数设置nginx在读取body请求体过程中是否想上有服务器进行传输,设置on是等完全读到请求体后再向上游服务器发送数据,设置off则是一边读body一边向上游服务器发送数据。

    5.读到数据后,根据upstream配置的服务器列表向上游服务器发送数据。

    6.加入epoll事件队列,出发回调函数。发送到上游服务器。上游服务器收到请求后返回数据。

    nginx接收到请求后触发epoll事件,调用回调函数处理请求。

    7.nginx接收上游服务器的数据,在反向代理的网络中,nginx和上游服务器的网络很有可能是内网,网络速度快,如果上有服务器返回数据大,nginx中proxy_buffering如果设置成off,那么nginx对于上游读取到的数据完全不做缓冲,即读多少,向下游发多少,这样会造成nginx与上游服务器的tcp网络一直不能中断。

    所以我们可以将proxy_buffering设置成on,那么可以将上游传输的数据缓冲到nginx中,并释放与上游服务器的tcp连接或者复用该连接,同时向下游服务器传输数据。

    proxy_buffer_size                #缓冲header里面的数据

    proxy_buffering on;                #是否将数据读取到缓冲区。

    proxy_buffers 32 64k;                #缓冲区32个64k的内存块

    proxy_max_temp_file_size        #像磁盘中写入的数据最大值,默认1G。

    proxy_temp_path                        #写入路径

    proxy_temp_file_wirte_size                #向临时缓冲区写文件,每次写入大小。

  • 相关阅读:
    C语言常用内存函数(超详细版)
    Keycloak服务开发-认证服务SPI
    移动端抓包
    典型相关分析CCA计算过程
    互联网Java工程师面试题·Spring篇·第二弹
    传输层协议 --TCP报文格式详细介绍
    两数之和-leetcode
    Spring5学习笔记03--Bean的生命周期
    C语言K&R圣经笔记 第3章控制流 3.1语句和块 3.2 if-else 3.3 else-if
    基于Tomcat配置JNDI数据源完整演示
  • 原文地址:https://blog.csdn.net/h2728677716/article/details/133470798