- Added the recommended code snippet
This commit is contained in:
Toby Chui
2025-09-25 21:11:10 +08:00
parent f98e1b8218
commit 84a4eaaf95

View File

@@ -6,6 +6,7 @@ import (
"errors"
"io"
"log"
"net"
"net/http"
"net/url"
"strings"
@@ -301,6 +302,29 @@ func (p *ReverseProxy) ProxyHTTP(rw http.ResponseWriter, req *http.Request, rrr
return http.StatusBadGateway, err
}
//Fix for issue #821
if outreq.URL != nil && strings.EqualFold(outreq.URL.Scheme, "https") {
if tr, ok := transport.(*http.Transport); ok {
serverName := outreq.Host
if h, _, err := net.SplitHostPort(serverName); err == nil {
serverName = h
}
if tr.TLSClientConfig == nil || tr.TLSClientConfig.ServerName != serverName {
trc := tr.Clone()
var cfg *tls.Config
if tr.TLSClientConfig != nil {
cfg = tr.TLSClientConfig.Clone()
} else {
cfg = &tls.Config{}
}
cfg.ServerName = serverName
trc.TLSClientConfig = cfg
transport = trc
}
}
}
// Remove hop-by-hop headers listed in the "Connection" header of the response, Remove hop-by-hop headers.
if !rrr.NoRemoveHopByHop {
removeHeaders(res.Header, rrr.NoCache)