最近开发了一个大模型的应用,采用SSE流式响应技术开发。前后端联调的时候,页面内容的响应还是很丝滑的。但使用Nginx部署前端程序后,页面内容的响应就感觉一卡一卡的,好像是每隔两三秒返回一部分内容一样。
这个时候,我们需要简单配置一下Nginx:
http {...server {...location /sse {# SSE 连接时的超时时间proxy_read_timeout 86400s;# 取消缓冲proxy_buffering off;# 关闭代理缓存proxy_cache off;# 禁用分块传输编码# chunked_transfer_encoding offproxy_pass http://10.8.10.182:18085/;}...}...
}
- proxy_buffering off 指令来确保数据可以实时传输,而不需要等待缓冲区满。在SSE请求中禁用缓冲,以便正确处理SSE流式数据。
- proxy_cache 对于 SSE(Server-Sent Events)连接,通常不建议启用 Nginx 的代理缓存(proxy_cache)。因为 SSE 是一种长连接技术,它通过保持持久连接来实时推送数据给客户端,而代理缓存会将响应数据缓存起来并在后续请求中返回缓存的响应,这与 SSE 的工作方式相违背。如果启用代理缓存,Nginx 可能会缓存 SSE 的数据,并在后续的连接中返回相同的缓存数据,这样会导致客户端收到重复的消息,破坏了 SSE 的实时性和准确性。
- chunked_transfer_encoding 参数可以根据你的需求决定是否关闭。在 SSE 中,通常不需要禁用分块传输编码,因为它允许将数据以数据块的形式逐步传输,与 SSE 的流式数据特性相符合。
修改完以上内容,重启,就OK啦。
参考:
https://blog.csdn.net/toormi/article/details/131793555