如何在golang中实现反向代理以支持nginx渐进下载?

如何在golang中实现反向代理以支持nginx渐进下载?,go,nginx,video-streaming,progressive-download,Go,Nginx,Video Streaming,Progressive Download,我有一个golang Web服务器,它从nginx获取视频文件。 当我直接从html5标签调用nginx视频时,视频播放流畅,渐进式下载。我所说的渐进式下载是指随机搜索没有任何特殊的播放器逻辑 但是,当我通过golang webserver调用它时,inturn使用golang NewSingleHostReverseProxy()类调用nginx链接,渐进式下载不起作用 是否可以使用golang反向代理启用渐进下载 golang Web服务器中的反向代理代码: url, _ := url.Pa

我有一个golang Web服务器,它从nginx获取视频文件。 当我直接从
html5标签调用nginx视频时,视频播放流畅,渐进式下载。我所说的渐进式下载是指随机搜索没有任何特殊的播放器逻辑

但是,当我通过golang webserver调用它时,inturn使用golang NewSingleHostReverseProxy()类调用nginx链接,渐进式下载不起作用

是否可以使用golang反向代理启用渐进下载

golang Web服务器中的反向代理代码:

url, _ := url.Parse("http://nginx-server/")
proxy := httputil.NewSingleHostReverseProxy(url)
router.PathPrefix("/video").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        proxy.ServeHTTP(w, r)
})

我相信您只需要将FlushInterval设置为负数

FlushInterval指定刷新间隔 复制时刷新到客户端的步骤 响应机构。 如果为零,则不进行定期冲洗。 负值表示立即刷新 每次写入客户端后。 当ReverseProxy时,将忽略FlushInterval 将响应识别为流式响应,或 如果其ContentLength为-1;对于这样的回答,他写道 立即刷新到客户端


设置FlushInterval=-1没有帮助。我想知道golang Web服务器是否会在页面加载时返回一些响应头,从而禁用播放器进行随机搜索。很抱歉,您是对的。我之前使用了错误的nginx url。当搜索视频中尚未加载的部分时,浏览器应发送带有标题的请求。您的服务器是否响应状态代码
206
,还是其他原因?因为如果没有,浏览器将继续完整的文件下载(这意味着你无法搜索)。因此,您可能需要找出报头丢失的位置(但代理似乎将其包含在请求中)
proxy := httputil.NewSingleHostReverseProxy(url)
proxy.FlushInterval = -1