Kubernetes Nginx控制器分块传输编码/数据流/请求正文缓冲

Kubernetes Nginx控制器分块传输编码/数据流/请求正文缓冲,kubernetes,nginx-reverse-proxy,nginx-ingress,azure-aks,Kubernetes,Nginx Reverse Proxy,Nginx Ingress,Azure Aks,您好,我们正在使用以下配置: Kubernetes版本1.16.13 Nginx入口控制器映像:控制器:v0.34.1(最新) 架构: Azure应用程序网关标准V2(无AWF),带有SSL证书/SSL终止 Azure Kubernetes服务(AKS) 问题描述: 每当我们上传POST大文件时,Nginx都会在将整个cliend主体请求发送到API之前读取它。请求来->Nginx读取请求体的100%并将其缓冲到temp目录,在接收到完整的请求体后,它开始将数据发送到实际的API,该API将数据

您好,我们正在使用以下配置:

  • Kubernetes版本1.16.13
  • Nginx入口控制器映像:控制器:v0.34.1(最新)
  • 架构:

  • Azure应用程序网关标准V2(无AWF),带有SSL证书/SSL终止
  • Azure Kubernetes服务(AKS)
  • 问题描述:

    每当我们上传POST大文件时,Nginx都会在将整个cliend主体请求发送到API之前读取它。请求来->Nginx读取请求体的100%并将其缓冲到temp目录,在接收到完整的请求体后,它开始将数据发送到实际的API,该API将数据流传输到BLOB存储

    我们的目标是什么:一旦Nginx收到body请求,它就会将数据的缝隙重定向到API

    已完成的工作:在API入口中添加了一个选项:

    nginx.ingress.kubernetes.io/proxy_request_buffering off;
    
    将以下内容和添加到主配置映射中:

    chunked_transfer_encoding: "on"
    
    已检查入口吊舱内的nginx.conf-成功应用新配置

    一个̶c̶h̶i̶e̶e̶v̶e̶d̶:Nginx停止将主体请求缓冲到临时文件,但它仍然不会重定向数据,在WebUI中,我们看到99%的“上载”,应用程序日志(在调试级别)没有给我们任何帮助,在99%的情况下,我们开始在API上看到数据流到BLOB存储的日志

    我们使用 kubectl port forward命令和通过邮递员发出的直接POST请求—应用程序按预期工作,它在接收数据块时向BLOB发送数据块

    在进行了各种尝试/测试后,我们在internet上找到了另一个自定义头并应用于configMap级别:

    X-Accel-Buffering: "no"
    
    这两种配置都没有帮助,之后我们开始将所有缓冲值设置为“off”和“0”-也没有帮助

    根据官方文件 如果禁用了代理请求缓冲功能,则在收到请求正文时会立即将其发送到代理服务器
    ,但该指令根本不起作用