From 51d19839bf8a0c5cd0542aac9285cec1d448909c Mon Sep 17 00:00:00 2001 From: Marcos Lilljedahl Date: Thu, 19 Jan 2017 13:20:10 -0300 Subject: [PATCH] Add transport to avoid connection re-use --- handlers/reverseproxy.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/handlers/reverseproxy.go b/handlers/reverseproxy.go index 63d5ed6..849fd5c 100644 --- a/handlers/reverseproxy.go +++ b/handlers/reverseproxy.go @@ -6,11 +6,24 @@ import ( "net/http" "net/http/httputil" "strings" + "time" "github.com/gorilla/mux" ) func NewMultipleHostReverseProxy() *httputil.ReverseProxy { + var transport http.RoundTripper = &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 10 * time.Second, + KeepAlive: 0, + }).DialContext, + DisableKeepAlives: true, + MaxIdleConns: 1, + IdleConnTimeout: 100 * time.Millisecond, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + } director := func(req *http.Request) { v := mux.Vars(req) node := v["node"] @@ -35,7 +48,7 @@ func NewMultipleHostReverseProxy() *httputil.ReverseProxy { req.URL.Host = fmt.Sprintf("%s:%s", node, port) } - return &httputil.ReverseProxy{Director: director} + return &httputil.ReverseProxy{Director: director, Transport: transport} } func NewSSLDaemonHandler() *httputil.ReverseProxy {