From 97c7e0940b5cde0b4bb5b017f3ab0bc9d55199a2 Mon Sep 17 00:00:00 2001 From: Jonas Kaninda Date: Tue, 29 Oct 2024 14:36:57 +0100 Subject: [PATCH] feat: add enable and disable keep alive --- pkg/config.go | 1 + pkg/middleware/error-interceptor.go | 2 ++ pkg/proxy.go | 2 -- pkg/server.go | 2 ++ 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/config.go b/pkg/config.go index 853167a..a70b593 100644 --- a/pkg/config.go +++ b/pkg/config.go @@ -153,6 +153,7 @@ type Gateway struct { //Disable dispelling routes on start DisableDisplayRouteOnStart bool `yaml:"disableDisplayRouteOnStart"` InterceptErrors []int `yaml:"interceptErrors"` + EnableKeepAlive bool `yaml:"enableKeepAlive"` // Cors contains the proxy global cors Cors Cors `yaml:"cors"` // Routes defines the proxy routes diff --git a/pkg/middleware/error-interceptor.go b/pkg/middleware/error-interceptor.go index 8383487..607df03 100644 --- a/pkg/middleware/error-interceptor.go +++ b/pkg/middleware/error-interceptor.go @@ -57,6 +57,8 @@ func (intercept InterceptErrors) ErrorInterceptor(next http.Handler) http.Handle return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { rec := newResponseRecorder(w) next.ServeHTTP(rec, r) + //Set Server name + w.Header().Set("Server", "Goma") if canIntercept(rec.statusCode, intercept.Errors) { logger.Debug("Backend error intercepted") logger.Debug("An error occurred in the backend, %d", rec.statusCode) diff --git a/pkg/proxy.go b/pkg/proxy.go index 9d60298..88d9e90 100644 --- a/pkg/proxy.go +++ b/pkg/proxy.go @@ -38,8 +38,6 @@ func (proxyRoute ProxyRoute) ProxyHandler() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { realIP := getRealIP(r) logger.Info("%s %s %s %s", r.Method, realIP, r.URL, r.UserAgent()) - //Set Server name - w.Header().Set("Server", serverName) // Set CORS headers from the cors config //Update Cors Headers for k, v := range proxyRoute.cors.Headers { diff --git a/pkg/server.go b/pkg/server.go index 9dfbcdc..446eb61 100644 --- a/pkg/server.go +++ b/pkg/server.go @@ -39,6 +39,8 @@ func (gatewayServer GatewayServer) Start(ctx context.Context) error { if !gatewayServer.gateway.DisableDisplayRouteOnStart { printRoute(gatewayServer.gateway.Routes) } + // Set KeepAlive + srv.SetKeepAlivesEnabled(gatewayServer.gateway.EnableKeepAlive) go func() { logger.Info("Started Goma Gateway server on %v", gatewayServer.gateway.ListenAddr)