我正在测试反向代理。主要用于播放来自其他后端服务器的底层nginx和流式视频。视频流中的导航,golang中的反向代理

问题是在浏览视频时。例如,通过代理玩vlc时 - 视频正常启动,但在尝试导航时停止。但是,如果我直接从nginx播放这个视频 - 它工作正常。

Range: N-

问:

如何播放导航,播放视频流时?它发送给服务器的请求是什么? 也许我错过了连接处理的东西?

http://localhost/31285611
package main 

import (
    "net/http" 
) 

func main() { 
    (&proxy{}).start() 
} 

type proxy struct { 
    // ... 
} 

func (p *proxy) start() { 
    http.HandleFunc("/play", p.connection) 
    http.ListenAndServe("localhost:8040", nil) 
} 

func (p *proxy) connection(w http.ResponseWriter, r *http.Request) { 
    disconnect := make(chan bool, 1) 
    go p.send(w, r, disconnect) 

    // ... 

    <-disconnect 
} 


func (p *proxy) send(rv http.ResponseWriter, rvq *http.Request, disconnect chan bool) { 

    rq, _ := http.NewRequest("GET", "http://localhost/31285611", rvq.Body) 
    rq.Header = rvq.Header 

    rs, _ := http.DefaultClient.Do(rq) 
    for k, v := range rs.Header { 
     rv.Header().Set(k, v[0]) 
    } 
    rv.WriteHeader(http.StatusOK) 

    buf := make([]byte, 1024) 

    // for testing sending only first part. 
    for i := 0; i < 100000; i++ { 
     n, e := rs.Body.Read(buf[0:]) 
     if n == 0 || e != nil { 
      break 
     } 
     rv.Write(buf[0:]) 
    } 

    disconnect <- true 

} 

更新(头转储):

第一个球员的连接:从nginx的,

map[User-Agent:[VLC/2.0.0 LibVLC/2.0.0] Range:[bytes=0-] Connection:[close] Icy-Metadata:[1]] 

响应创建中去连接时:

map[Server:[nginx/1.3.4] Date:[Tue, 23 Apr 2013 13:29:00 GMT] Content-Type:[application/octet-stream] Content-Length:[8147855699] Last-Modified:[Tue, 21 Aug 2012 20:47:20 GMT] Etag:["5033f3d8-1e5a66953"] Content-Range:[bytes 0-8147855698/8147855699]]