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

 更新时间:2024年04月29日 10:59:14   作者:技术杠精  
nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,本文主要介绍了Nginx的流式响应配置实现小结,具有一定的参考价值,感兴趣的可以了解一下

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 流式响应配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用log_format为Nginx服务器设置更详细的日志格式方法

    使用log_format为Nginx服务器设置更详细的日志格式方法

    下面小编就为大家分享一篇使用log_format为Nginx服务器设置更详细的日志格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Nginx + lua 实现WAF的详细过程

    Nginx + lua 实现WAF的详细过程

    这篇文章主要介绍了Nginx + lua 实现WAF的详细过程,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Nginx stub_status 监控模块的功能实现

    Nginx stub_status 监控模块的功能实现

    本篇文章主要介绍了Nginx stub_status 监控模块的功能实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Nginx服务器的location指令匹配规则详解

    Nginx服务器的location指令匹配规则详解

    这篇文章主要介绍了Nginx服务器的location指令匹配规则,文中介绍了一种动静态地址分离的方法示例,需要的朋友可以参考下
    2015-12-12
  • Ubuntu下搭建与配置Nginx服务

    Ubuntu下搭建与配置Nginx服务

    这篇文章介绍了Ubuntu下搭建与配置Nginx服务的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Nginx反向代理websocket配置实例

    Nginx反向代理websocket配置实例

    这篇文章主要介绍了Nginx反向代理websocket配置实例,本文是项目需求配置成功后的总结,需要的朋友可以参考下
    2014-09-09
  • 一些优化Nginx服务器的技巧简介

    一些优化Nginx服务器的技巧简介

    这篇文章主要介绍了一些优化Nginx服务器的技巧简介,包括对HTTP模块和Events模块的配置建议,需要的朋友可以参考下
    2015-06-06
  • Nginx配置server_name为域名后无法访问的问题解决

    Nginx配置server_name为域名后无法访问的问题解决

    在Nginx的配置文件中增加服务器,其server_name设置为域名时,该网址不能正常访问,所以本文给大家介绍了Nginx配置server_name为域名后无法访问的问题解决,需要的朋友可以参考下
    2024-01-01
  • Nginx中定义404页面并且返回404状态码的正确方法

    Nginx中定义404页面并且返回404状态码的正确方法

    这篇文章主要介绍了Nginx中定义404页面并且返回404状态码的正确方法,本文在一次AJAX调用时发现了这个问题,服务器返回了一个404页页但没有返回404状态码,需要的朋友可以参考下
    2014-08-08
  • nginx反向代理导致session失效的问题解决

    nginx反向代理导致session失效的问题解决

    这篇文章主要介绍了nginx反向代理导致session失效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论