I want to build a reverse proxy in golang, which acts as a middleware that forwards https requests to an http API and then forwards the response to the client in a secure and encrypted way.
I've had a look at the httputil.ReverseProxy but I'd like to know if I'm getting this right
this is the function that returns the handler that takes care of forwarding https to http and response back to https:
func (s *service) setUpRouter() (http.Handler, error) {
// targetURL is the API where the requests are forwarded to
targetURL, err := url.Parse(s.target)
if err != nil {
return nil, err
}
reverseProxy := httputil.NewSingleHostReverseProxy(targetURL)
reverseProxy.Director = func(request *http.Request) {
request.Header.Add("X-Forwarded-Host", request.Host)
request.Header.Add("X-Origin-Host", targetURL.Host)
request.URL.Scheme = "http"
request.URL.Host = targetURL.Host
}
return reverseProxy, nil
}
I'd expect the reverse proxy to forward the request to the http API and returnt the response to the client in the form of https.