我想在golang中建立一个反向代理,它充当一种中间件,将https请求转发到http API,然后以安全和加密的方式将响应转发到客户端。
我看过httputil.ReverseProxy,但是我想知道我是否正确
这是一个返回处理程序的函数,该处理程序负责将https转发到http并将响应返回到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
}
我希望反向代理将请求转发到http API,并将响应以https的形式返回给客户端。