I know it's not really answering your question (and I don't have enough points to comment yet, so sorry for providing this as an answer!) but have you tried using Go's built in http.ReverseProxy (http://golang.org/pkg/net/http/httputil/#ReverseProxy)?
There seems to be a nice, simple example here https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/1ufEw_IEVM4 which I've very slightly modified below:
package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
)
func main() {
proxy := httputil.NewSingleHostReverseProxy(&url.URL{Scheme: "http", Host: "www.google.com", Path: "/"})
err := http.ListenAndServe(":8080", proxy)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
See if that does the job.
Also, in the previously linked Google Groups discussion, there is mention of NginX having issues with chunked encoding. It might be worth checking if this is related.