...

Source file src/edge-infra.dev/pkg/edge/iam/verify/reverseProxy.go

Documentation: edge-infra.dev/pkg/edge/iam/verify

     1  package verify
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httputil"
     6  	"net/url"
     7  	"time"
     8  
     9  	"edge-infra.dev/pkg/lib/logging"
    10  )
    11  
    12  // This reverse proxy is need to route calls that are made within the pod to localhost:8080 to touchpoint provider.
    13  // As localhost:8080 isnt know within the pod.
    14  func reverseproxy() {
    15  	logger := logging.NewLogger()
    16  
    17  	target, err := url.Parse(InClusterIssuerURL())
    18  	if err != nil {
    19  		logger.Error(err, "Error parsing in cluster url")
    20  	}
    21  
    22  	proxy := httputil.NewSingleHostReverseProxy(target)
    23  
    24  	go func() {
    25  		// Create a custom server with a reverse proxy handler
    26  		server := &http.Server{
    27  			Addr:              ":8080",
    28  			ReadHeaderTimeout: 2 * time.Second,
    29  			ReadTimeout:       2 * time.Second,
    30  			Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    31  				r.URL.Host = target.Host
    32  				r.URL.Scheme = target.Scheme
    33  				r.Header.Set("X-Forwarded-Host", r.Header.Get("Host"))
    34  				r.Host = target.Host
    35  
    36  				proxy.ServeHTTP(w, r)
    37  			}),
    38  		}
    39  
    40  		logger.Info("Starting reverse proxy server on :8080")
    41  		err = server.ListenAndServe()
    42  		if err != nil {
    43  			logger.Error(err, "Error starting reverse proxy server")
    44  		}
    45  	}()
    46  }
    47  

View as plain text