Nginx反向代理配置流式响应

2023-11-01

Nginx 是通过缓存响应内容来处理请求的。也就是说,当 Nginx 接收到完整的响应后,才会将其发送给客户端,所以默认不支持流式响应,这里讲讲 Nginx 反向代理中怎么配置流式响应?

Nginx 流式响应

一、使用背景

最近使用 Egg.js 搭建自动化部署服务,其中有个地方需要开启一个子进程执行 shell 脚本,因为脚本中有大量耗时任务,如:build 编译打包,zip 文件压缩,unzip 解压等等。
为了将脚本每一步的执行日志信息返回到前端进行展示,所以就选择使用流式接口返回结果。
在本地 localhost 环境可以正常进行流式响应,但是发布到 CentOS 服务器上使用 Nginx 反向代理后,每次都是等待脚本全部执行完,才会一次性返回所有结果信息,这显然不是 stream 流式响应。

stream 其他使用场景:像是 ChatGPT 这类 AI 产品,在聊天时的 打字机效果,就是 stream 流式响应的一种实现。

二、nginx配置流式响应

关闭响应缓存:proxy_buffering off

location /api {
    proxy_buffering off; # 关闭响应缓存,添加这一行
    proxy_pass http://127.0.0.1:7001;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

欢迎访问:天问博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx反向代理配置流式响应 的相关文章

随机推荐

  • java中方法名,对象名,变量名,标识符,关键字的规则

    java中方法名 对象名 变量名 标识符 关键字的规则 总绪 方法名 对象名 变量名 标识符 关键字 总绪 所有命名规则必须遵循以下规则 1 名称只能由字母 数字 下划线 符号组成 2 不能以数字开头 3 名称不能使用JAVA中的关键字 4
  • 机试之前最后的知识点总结。

    题目描述 C 头文件大全 解题思路一 include
  • 敏捷Agile: Epic vs UserStory vs Task

    Epic Story Task Epic Epic是User Story逻辑上的集合 一个Epic可以被break down成多个小的User Story 一个Epic可能需要多个Sprint才能完成 User Story vs Task
  • TensorFlow各版本下载地址

    TensorFlow各版本自主下载地址 cpu版本 pip install 链接 https pypi python org pypi tensorflow 2 0 0 下载地址链接 https pypi org project tenso
  • MATLAB实现基本的PSO粒子群算法优化目标函数(求函数最小值的解),写成函数的形式,并举例演示如何使用

    粒子群优化算法 Particle Swarm Optimization 是一种进化计算机技术 evolutionary computation 源于对鸟类捕食行为的研究 是一种基于迭代的优化工具 事实上 像PSO这种同属于元启发式优化算法有
  • java中静态代码块详解

    今天在项目中看到这行代码 静态代码块 很久没用静态代码块了 今天来复习一下 依旧按照为什么 是什么 怎么用 的思想 去学习 为什么 先说说代码中为什么要使用这种写法吧 还记得静态代码块的特点吗 随着类的加载而执行 而且只执行一次 对 没错
  • 求求你们了,MyBatis 批量插入别再乱用 foreach 了,5000 条数据花了 14 分钟。。...

    近日 项目中有一个耗时较长的Job存在CPU占用过高的问题 经排查发现 主要时间消耗在往MyBatis中批量插入数据 mapper configuration是用foreach循环做的 差不多是这样 由于项目保密 以下代码均为自己手写的de
  • Windows获取CPU、内存和磁盘使用率脚本

    获取CPU使用率脚本 vbs 另存为cpu vbs On Error Resume Next Set objProc GetObject winmgmts root cimv2 win32 processor cpu0 Wscript Ec
  • C语言:输出1000~3000年中所有的闰年,每5年换一行

    C语言 输出1000 3000年中所有的闰年 每5年换一行 题目 分析 代码 题目 编写程序 输出1000 3000年中所有的闰年 每5年换一行 分析 判断闰年的条件为 能被4整除但不能被100整除 或者能被400整除 代码 include
  • 《Vision Transformers: State of the Art and Research Challenges》论文翻译阅读

    作者 Bo Kai Ruan Hong Han Shuai Wen Huang Cheng 概要 Transforme在自然语言处理中取得了巨大的成功 由于Transformer的自注意机制具有强大的能力 研究人员开发vision tran
  • C++ 聚合类(Aggregate Class)

    C 聚合类 Aggregate Class 文章目录 C 聚合类 Aggregate Class 概述 聚合类定义 聚合类的特性 value initialized 聚合类的初始化方法 union 聚合 总结 概述 该篇文章是用于梳理在学习
  • 安装mysql中遇到的错误:

    1 安装报错 Install Remove of the Service Denied 解决方案如下 2 安装报错 The service already exists 解决方案如下 3 安装报错 Can t create test fil
  • 真机上,微信小程序弹出层中使用textarea组件无法显示文本的问题

    真机上 微信小程序弹出层中使用textarea组件无法显示文本的问题 解决思路 文章链接 最近开发微信小程序发现了一个BUG 最后莫名奇妙地解决了 隐隐约约地感觉和微信小程序地textarea组件的z index层级有关 没有去深究其中原理
  • 【前端知识之Vue】diff算法流程

    前言 本系列主要整理前端面试中需要掌握的知识点 本节介绍diff算法流程以及相关例子 如果想看源码推荐YK菌的 Vue源码 图解 diff算法 与 虚拟DOM snabbdom 最小量更新原理解析 手写源码 updateChildren哦
  • IntelliJ IDEA-配置文件位置

    关于配置文件的位置 一旦开始使用IDEA之后 就需要做很多的配置相关工作 使得IDEA越来越符合你的个人习惯 让你使用起来得心应手 而这些配置信息 都保存在C盘 比如我的就会默认保存在如图所示的位置 C Documents and Sett
  • flutter loading前一个界面关闭后一个界面的loading

    import package flutter cupertino dart import package flutter material dart import package flutter easyloading flutter ea
  • H5 架构和原生架构的区别

    1 App 的 3 种开发方式 表面上看 手机 App 都是同样的东西 就是手机上的应用程序 点击图标就能运行 但是它们的底层技术不一样 按照开发技术 App 可以分成三大类 原生应用 简称 nativeApp Web 应用 简称 WebA
  • 阿里云轻量应用服务器mysql远程连接教程

    阿里云轻量应用服务器mysql远程连接教程 打开轻量应用服务器控制台 打开防火墙 点击添加规则 打开服务器命令行 可以使用Xshell等软件 在阿里云控制台开放3306端口后后在linux系统中也要开放3306端口 在服务器中开放防火墙33
  • esp32搭建lvgl

    platformio 下载两个库 TFT eSPI lv arduino 3 0 1对应lvgl 7 2 7 5对应lvgl6 pio libdeps tft espi user Setup h 驱动芯片选择 颜色顺序 分辨率选择 不同芯片
  • Nginx反向代理配置流式响应

    Nginx 是通过缓存响应内容来处理请求的 也就是说 当 Nginx 接收到完整的响应后 才会将其发送给客户端 所以默认不支持流式响应 这里讲讲 Nginx 反向代理中怎么配置流式响应 一 使用背景 最近使用 Egg js 搭建自动化部署服