package main import ( "net/http" "net/http/httputil" "net/url" ) func main() { remote, err := url.Parse("https://www.google.com") if err != nil { panic(err) } proxyHandler := NewProxyHandler(remote) http.Handle("/", proxyHandler) err = http.ListenAndServe(":3022", nil) if err != nil { panic(err) } } func NewProxyHandler(target *url.URL) *httputil.ReverseProxy { director := func(req *http.Request) { req.Host = target.Host req.URL.Host = target.Host req.URL.Scheme = target.Scheme } return &httputil.ReverseProxy{Director: director} } type ProxyHandler struct { p *httputil.ReverseProxy }