diff --git a/pkg/config.go b/pkg/config.go index 28db467..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 @@ -243,6 +244,7 @@ func initConfig(configFile string) { DisableRouteHealthCheckError: false, DisableDisplayRouteOnStart: false, RateLimiter: 0, + InterceptErrors: []int{405, 500}, Cors: Cors{ Origins: []string{"http://localhost:8080", "https://example.com"}, Headers: map[string]string{ @@ -253,8 +255,7 @@ func initConfig(configFile string) { }, Routes: []Route{ { - Name: "HealthCheck", - Host: "localhost", + Name: "Public", Path: "/public", Destination: "http://localhost:80", Rewrite: "/healthz", @@ -282,19 +283,27 @@ func initConfig(configFile string) { }, }, }, + { + Name: "Hostname example", + Host: "example.com", + Path: "/", + Destination: "https://example.com", + Rewrite: "/", + HealthCheck: "", + }, }, }, Middlewares: []Middleware{ { Name: "basic-auth", - Type: "basic", + Type: basicAuth, Rule: BasicRule{ Username: "goma", Password: "goma", }, }, { Name: "jwt", - Type: "jwt", + Type: jwtAuth, Rule: JWTRuler{ URL: "https://www.googleapis.com/auth/userinfo.email", RequiredHeaders: []string{ 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/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) diff --git a/pkg/var.go b/pkg/var.go index 5a75b09..a750893 100644 --- a/pkg/var.go +++ b/pkg/var.go @@ -5,3 +5,4 @@ const accessControlAllowOrigin = "Access-Control-Allow-Origin" const basicAuth = "basicAuth" const jwtAuth = "jwtAuth" const OAuth = "OAuth" +const serverName = "Goma"