繁体   English   中英

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

[英]How to implement reverse proxy in golang to support nginx progressive download?

我有一个从 nginx 获取视频文件的 golang 网络服务器。 当我直接从<video> html5 标签调用 nginx 视频时,视频播放流畅,渐进式下载。 通过渐进式下载,我的意思是随机搜索无需任何特殊的播放器逻辑即可工作。

但是,当我通过 golang 网络服务器调用它时,该服务器又使用 golang NewSingleHostReverseProxy() class 调用 nginx 链接,渐进式下载不起作用。

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

golang webserver中反向代理的代码:

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 将响应识别为流式响应,或者其 ContentLength 为 -1 时,将忽略 FlushInterval; 对于此类响应,写入会立即刷新到客户端。

proxy := httputil.NewSingleHostReverseProxy(url)
proxy.FlushInterval = -1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM