github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/web/proxyhandler/handler.go (about)

     1  package proxyhandler
     2  
     3  import (
     4  	"net"
     5  	"net/http"
     6  	"net/http/httputil"
     7  	"net/url"
     8  	"time"
     9  
    10  	"code.cloudfoundry.org/lager"
    11  )
    12  
    13  func 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  }