1package proxyhandler 2 3import ( 4 "net" 5 "net/http" 6 "net/http/httputil" 7 "net/url" 8 "time" 9 10 "code.cloudfoundry.org/lager" 11) 12 13func NewHandler(logger lager.Logger, host string) (http.Handler, error) { 14 15 targetUrl, err := url.Parse(host) 16 if err != nil { 17 return nil, err 18 } 19 20 dialer := &net.Dialer{ 21 Timeout: 24 * time.Hour, 22 KeepAlive: 24 * time.Hour, 23 } 24 25 transport := &http.Transport{ 26 Proxy: http.ProxyFromEnvironment, 27 Dial: dialer.Dial, 28 TLSHandshakeTimeout: 60 * time.Second, 29 } 30 31 handler := httputil.NewSingleHostReverseProxy(targetUrl) 32 handler.FlushInterval = 100 * time.Millisecond 33 handler.Transport = transport 34 35 return handler, nil 36} 37