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

相关文章

  • Centos系统中如何在指定位置下安装Nginx

    Centos系统中如何在指定位置下安装Nginx

    这篇文章主要介绍了Centos系统中如何在指定位置下安装Nginx,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Nginx代理时header头中带

    Nginx代理时header头中带"_"信息丢失问题的解决

    这篇文章主要给大家介绍了关于Nginx代理时header头中带"_"信息丢失问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • Nginx配置server_name为域名后无法访问的问题解决

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

    在Nginx的配置文件中增加服务器,其server_name设置为域名时,该网址不能正常访问,所以本文给大家介绍了Nginx配置server_name为域名后无法访问的问题解决,需要的朋友可以参考下
    2024-01-01
  • 详解Nginx几种常见实现301重定向方法上的区别

    详解Nginx几种常见实现301重定向方法上的区别

    本篇文章主要介绍了详解Nginx几种常见实现301重定向方法上的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • nginx网页缓存时间的配置过程

    nginx网页缓存时间的配置过程

    Nginx缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,下面这篇文章主要给大家介绍了关于nginx网页缓存时间的配置过程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • 修改Nginx配置返回指定content-type的方法

    修改Nginx配置返回指定content-type的方法

    nginx作为一个http服务器,在功能实现方面和性能方面都表现的非常优越,下面这篇文章主要给大家介绍了关于修改Nginx配置返回指定content-type的相关资料,需要的朋友可以参考下
    2022-09-09
  • Nginx服务器实现数据静态压缩的方法

    Nginx服务器实现数据静态压缩的方法

    这篇文章主要介绍了Nginx服务器实现数据静态压缩的方法,服务器中压缩CSS和JavaScript进行缓存一定程度上可以帮助提高服务器的IO速度,需要的朋友可以参考下
    2015-07-07
  • nginx版本号隐藏(附405 not allowed解决办法)

    nginx版本号隐藏(附405 not allowed解决办法)

    版本号泄露时攻击者会利用相应软件版本的当前漏洞,进行有效的相应攻击,本文主要介绍了nginx版本号隐藏,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • nginx 流控使用的项目实践

    nginx 流控使用的项目实践

    本文主要介绍了nginx 流控使用的项目实践
    2024-03-03
  • Nginx实现正向代理实例

    Nginx实现正向代理实例

    这篇文章主要介绍了Nginx实现正向代理实例,正向代理的作用在于正向代理隐藏了用户,用户的请求被代理服务器接收代替,到了服务器,服务器并不知道用户是谁,需要的朋友可以参考下
    2023-08-08

最新评论