如何在Nginx反向代理下设置同步传输?

0 投票
2 回答
643 浏览
提问于 2025-04-17 20:14

我正在使用Nginx作为反向代理。当我把一个文件上传到Nginx时,它似乎会先把整个文件存储在本地,然后再把这个文件转发到后端服务器,等到整个文件都接收完了才开始转发。有没有办法让Nginx在接收数据的同时就把数据转发出去呢?

2 个回答

0

你说的是流式传输。是的,你可能需要调整一下proxy_bufferingproxy_store和/或proxy_temp_file_write_size这些设置:

http://wiki.nginx.org/HttpProxyModule#proxy_store

http://wiki.nginx.org/HttpProxyModule#proxy_buffering

http://wiki.nginx.org/HttpProxyModule#proxy_temp_file_write_size

附注:因为nginx是单线程的,所以你真的需要使用这些功能(否则一个上传可能会让整个服务器卡很久)。

1

这个问题在这个链接上已经有了否定的回答: nginx 文件上传流媒体与 proxy_pass

上面问题的回答来自于维护 nginx 代码的人。所以现在你可以先不考虑这个了。

如果你真的很在意不想让文件传输两次的话,可以尝试使用 nginx 的上传模块,前提是你能控制你的上游服务器。http://wiki.nginx.org/HttpUploadModule

撰写回答