当前位置: 代码网 > 服务器>服务器>Nginx > Nginx的流式响应配置实现小结

Nginx的流式响应配置实现小结

2024年05月26日 Nginx 我要评论
nginx的流式响应配置使用chatgpt的能力在聊天时来实现打字机效果,因此需要服务端接口进行流式响应,碰到了几个问题:1、服务端明明配置了响应头的content-type为:text/event-

nginx的流式响应配置

使用chatgpt的能力在聊天时来实现打字机效果,因此需要服务端接口进行流式响应,碰到了几个问题:
1、服务端明明配置了响应头的content-type为:text/event-stream,但前端仍然不是流式接收内容。
2、虽然前端能以流式接收服务端的响应内容,但内容接收完毕,长连接并未关闭,导致前端还以为服务端有数据,会一直请求服务端,最后导致超时。

最后发现是nginx的问题,由于本地对接的时候并未启用nginx,所以本地对接没有任何问题。而线上使用nginx请求转发,有些配置是有默认参数的,所以会失败。因此,在这里分享一下,如果小伙们遇到同样的问题,可以试一试。

nginx部分配置如下:

server {
  server_name xxxx;
  listen xxxx;

  location /xx/xx  {
             add_header backendip $upstream_addr;
       
             proxy_set_header        host            $host;      
             proxy_set_header        x-real-ip       $remote_addr;      
             proxy_set_header        x-forwarded-for $proxy_add_x_forwarded_for;
             
             proxy_http_version 1.1; # 设置http版本为1.1;默认为:1.0
             proxy_set_header connection ""; # 设置connection为长连接;默认为:no     
             proxy_cache off;  # 关闭缓存;默认是:on
             proxy_buffering off;  # 关闭代理缓冲;默认是:on
             chunked_transfer_encoding on;  # 开启分块传输编码
             tcp_nopush on;  # 开启tcp nopush选项,禁止nagle算法
             tcp_nodelay on;  # 开启tcp nodelay选项,禁止延迟ack算法
             keepalive_timeout 60;  # 设定keep-alive超时时间为60秒  

             proxy_pass http://xxxx:xxxx;  
             proxy_redirect          off;  
             proxy_connect_timeout   15;  # 与upstream server的连接超时时间(没有单位,最大不可以超过75s)
             proxy_send_timeout      300; # 发送请求给upstream服务器的超时时间
             proxy_read_timeout      300; # nginx会等待多长时间来获得请求的响应
    }
}

最主要的几个配置:

  • proxy_http_version 1.1;
  • proxy_set_header connection “”;
  • proxy_cache off;
  • proxy_buffering off;
  • chunked_transfer_encoding on;

知识点:

nginx 是通过缓存响应内容来处理请求的。也就是说,当 nginx 接收到完整的响应后,才会将其发送给客户端,因此默认是不支持流式响应,需要手动开启。

到此这篇关于nginx的流式响应配置实现小结的文章就介绍到这了,更多相关nginx 流式响应配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Nginx ssi合并页面的具体实现

    Nginx ssi合并页面的具体实现

    在做一个网站时,页面上会有很多重复的内容,每个页面写一遍很冗余,修改时还容易遗漏,所以可以把公共的部分写好,放在单独的html中,用时引用就行了。nginx配置... [阅读全文]
  • Nginx四层负载均衡的实现示例

    Nginx四层负载均衡的实现示例

    1、nginx四层负载均衡1.1 负载均衡概述负载均衡是一种分布式计算技术,用于将网络流量和用户请求分散到多台服务器上,以此来提高网络服务的可用性和可靠性。它通... [阅读全文]
  • prometheus监控nginx的两种方式

    nginx监控搭建介绍说明文章介绍两种不同的nginx监控方法,第一种是nginx自带的tub_status模块进行监控,第二种是用vts监控工具进行监控。都是基于promethe…

    2024年05月26日 服务器
  • 解决方案之关于Nginx高可用方案

    解决方案:nginx高可用方案关键词 keepalived(主服务器 和 备份服务器 故障时 ip 瞬间无缝交接)vrrp协议(路由器组,提供虚拟ip,一个master和多个bac…

    2024年05月26日 服务器
  • nginx去掉前端配置的路径前缀两种情况

    nginx去掉前端配置的路径前缀两种情况

    背景在前端项目部署到nginx的时候,前端访问后端的路径加了一个全局前缀,一般来说这是前后端商量好的,但是呢也会有不一般的情况,后端在遇到这种情况的时候有两种选... [阅读全文]
  • Nginx在胖容器中的部署流程

    Nginx在胖容器中的部署流程

    背景介绍胖容器(fat container)是一种容器技术的形态,它在传统的轻量级容器基础上进行了扩展和增强。胖容器不仅包含了应用程序及其依赖项,还集成了大量的... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com