本文主要是介绍nginx 反代Server-Sent Events (sse)出现数据截断问题解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题
使用Nginx配置反向代理处理SSE请求时,偶尔会发生消息内容被截断,客户端无法正确接收消息的情况
原因
nginx的缓冲机制会将相应数据积累到缓冲大小再转发。
在sse请求中服务端通过长连接持续推送数据,而每一块数据通过/n/n分割。
如果nginx启用了缓冲,则会导致将sse的多块数据剪裁、拼接到缓冲长度进行发送,从而出现消息内容被截断的现象。
另:
nginx的代理缓存功能也于sse的实时推送需求相违背,建议关闭
解决
为SSE请求关闭缓冲、缓存
http {...server {...location /sse {... # 关闭缓冲proxy_buffering off;# 关闭缓存proxy_cache off;}...}...
}
这篇关于nginx 反代Server-Sent Events (sse)出现数据截断问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!