解决SSE流被Nginx缓存的问题

 更新时间:2023年10月16日 09:51:10   作者:路比船长  
如果你的服务使用了nginx网关,可能会出现nginx缓冲sse流的问题,导致的现象是,客户端调用sse接口时,流数据并不是一条条出现的,而是一口气出现的,本文将给大家介绍如何解决SSE流被Nginx缓存的问题,需要的朋友可以参考下

问题

如果你的服务使用了nginx网关,可能会出现nginx缓冲sse流的问题,导致的现象是,客户端调用sse接口时,流数据并不是一条条出现的,而是一口气出现的,原因就是nginx网关对流数据进行了缓存。

单个Nginx的情况

如果你的客户端和服务器之间只存在一层nginx网关,可以通过在接口添加X-Accel-Buffering=no的响应header,来告诉nginx不要对响应数据进行缓存。

多个Nginx的情况

但很多时候我们所在的服务环境可能不止一个nginx网关。拿我们的服务为例子,因为某些历史遗留原因,客户端到服务端实际上存在两个nginx网关,一个是公司层面的网关,一个是用于k8s反向代理的网关,这个时候单纯设置X-Accel-Buffering=no就无效了。

原因是响应数据首先到达第一个nginx,此时这个nginx会消耗掉这个header,然后将数据透传到下一个nginx,此时第二个nginx由于默认会缓存数据,所以sse流就再一次被缓存了。

解决办法是在第一个nginx的配置里面,继续加上这个header,表示这个路径下的请求需要带上这个header,这样第二个nginx才能继续收到这个header并且不缓存数据。

  location /path {
      ...
      add_header X-Accel-Buffering "no";
      ...
  }

客户端与服务器之间有n个nginx,就要至少在n-1个nginx里面配置好这个header。

到此这篇关于解决SSE流被Nginx缓存的问题的文章就介绍到这了,更多相关SSE流被Nginx缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx常见的错误配置举例

    Nginx常见的错误配置举例

    这篇文章主要介绍了Nginx常见的错误配置举例,帮助大家更好的理解和学习使用Nginx,感兴趣的朋友可以了解下
    2021-03-03
  • 浅析Nginx配置文件中的变量的编写使用

    浅析Nginx配置文件中的变量的编写使用

    这篇文章主要介绍了Nginx配置文件中的变量的编写使用,包括从常用的rewrite等方面来深入变量的相关定义,需要的朋友可以参考下
    2016-01-01
  • 用Nginx反向代理Node.js的方法

    用Nginx反向代理Node.js的方法

    本篇文章主要介绍了用Nginx反向代理Node.js的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 使用goaccess分析nginx日志的详细方法

    使用goaccess分析nginx日志的详细方法

    goaccess 工具提供快速、多样的HTTP状态统计,可以令管理员不再纠结于统计各类数据,和繁杂的指令以及一大堆管道/正则表达式说再见,今天通过本文给大家介绍goaccess 分析nginx 日志的方法,需要的朋友一起看看吧
    2021-07-07
  • Nginx处理请求时的匹配规则详析

    Nginx处理请求时的匹配规则详析

    这篇文章主要给大家介绍了关于Nginx处理请求时的匹配规则的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • nginx 集成lua操作mysql的过程解析

    nginx 集成lua操作mysql的过程解析

    lua是一夸小巧,灵活且高效的脚本语言,用标准C语言编写并以源代码形式开发,在很多业务场景下配合适当的设计,可以带来意想不到的效果,这篇文章主要介绍了nginx 集成lua操作mysql,需要的朋友可以参考下
    2022-05-05
  • Windows下Nginx + PHP5 的安装与配置方法

    Windows下Nginx + PHP5 的安装与配置方法

    Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定、性能更好,而且配置简单,资源占用较低。以下是我在 Windows 7 安装中 Nginx 和 PHP5.3 的步骤。
    2010-07-07
  • 详解nginx.conf 中 root 目录设置问题

    详解nginx.conf 中 root 目录设置问题

    这篇文章主要介绍了详解nginx.conf 中 root 目录设置问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 解决国内k8s的ingress-nginx镜像无法正常pull拉取问题

    解决国内k8s的ingress-nginx镜像无法正常pull拉取问题

    本文主要介绍了解决国内k8s的ingress-nginx镜像无法正常pull拉取问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • nginx基于tcp做负载均衡的方法

    nginx基于tcp做负载均衡的方法

    这篇文章主要介绍了nginx基于tcp做负载均衡的方法,需要的朋友可以参考下
    2014-08-08

最新评论