diff --git a/README.md b/README.md index 810953f..4d4b810 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,8 @@ gateway: rateLimiter: 0 accessLog: "/dev/Stdout" errorLog: "/dev/stderr" + ## Enable and disable routes healthc check + disableHealthCheckStatus: false ## Returns backend route healthcheck errors disableRouteHealthCheckError: false # Disable display routes on start diff --git a/docs/quickstart.md b/docs/quickstart.md index 9f372ca..72dbaa6 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -66,6 +66,8 @@ gateway: rateLimiter: 0 accessLog: "/dev/Stdout" errorLog: "/dev/stderr" + ## Enable and disable routes healthc check + disableHealthCheckStatus: false ## Returns backend route healthcheck errors disableRouteHealthCheckError: false # Disable display routes on start @@ -97,7 +99,7 @@ gateway: path: /public ## Rewrite a request path # e.g rewrite: /store to / - rewrite: /healthz + rewrite: / destination: https://example.com #DisableHeaderXForward Disable X-forwarded header. # [X-Forwarded-Host, X-Forwarded-For, Host, Scheme ] @@ -121,26 +123,18 @@ gateway: ##### Define route middlewares from middlewares names ## The name must be unique ## List of middleware name - middlewares: - - api-forbidden-paths - - basic-auth - # Example of a route | 2 - - name: Authentication service - path: /auth - rewrite: / - destination: 'http://security-service:8080' - healthCheck: /internal/health/ready - cors: {} middlewares: - api-forbidden-paths # Example of a route | 3 - name: Basic auth path: /protected rewrite: / - destination: 'http://notification-service:8080' + destination: https://example.com healthCheck: cors: {} - middlewares: [] + middlewares: + - api-forbidden-paths + - basic-auth #Defines proxy middlewares # middleware name must be unique @@ -181,17 +175,17 @@ middlewares: # # Add header to the next request from AuthRequest header, depending on your requirements # Key is AuthRequest's response header Key, and value is Request's header Key - # In case you want to get headers from the Authentication service and inject them into the next request's headers + # In case you want to get headers from the authentication service and inject them into the next request headers. headers: userId: X-Auth-UserId userCountryId: X-Auth-UserCountryId - # In case you want to get headers from the Authentication service and inject them to the next request's params + # In case you want to get headers from the Authentication service and inject them to the next request params. params: userCountryId: countryId - # The server will return 404 + # The server will return 403 - name: api-forbidden-paths type: access - ## Forbidden paths + ## prevents access paths paths: - /swagger-ui/* - /v2/swagger-ui/* diff --git a/goma.yml b/goma.yml index 6206612..a7c8a33 100644 --- a/goma.yml +++ b/goma.yml @@ -14,6 +14,8 @@ gateway: rateLimiter: 0 accessLog: "/dev/Stdout" errorLog: "/dev/stderr" + ## Enable and disable routes healthc check + disableHealthCheckStatus: false ## Returns backend route healthcheck errors disableRouteHealthCheckError: false # Disable display routes on start diff --git a/pkg/config.go b/pkg/config.go index 380117e..13d1664 100644 --- a/pkg/config.go +++ b/pkg/config.go @@ -152,6 +152,8 @@ type Gateway struct { RateLimiter int `yaml:"rateLimiter" env:"GOMA_RATE_LIMITER, overwrite"` AccessLog string `yaml:"accessLog" env:"GOMA_ACCESS_LOG, overwrite"` ErrorLog string `yaml:"errorLog" env:"GOMA_ERROR_LOG=, overwrite"` + // DisableHealthCheckStatus enable and disable routes health check + DisableHealthCheckStatus bool `yaml:"disableHealthCheckStatus"` // DisableRouteHealthCheckError allows enabling and disabling backend healthcheck errors DisableRouteHealthCheckError bool `yaml:"disableRouteHealthCheckError"` //Disable allows enabling and disabling displaying routes on start @@ -288,6 +290,7 @@ func initConfig(configFile string) { }, { Name: "Hostname example", + Host: "http://example.localhost", Path: "/", Destination: "https://example.com", Rewrite: "/", diff --git a/pkg/middleware_test.go b/pkg/middleware_test.go index cb464c1..4799cba 100644 --- a/pkg/middleware_test.go +++ b/pkg/middleware_test.go @@ -40,7 +40,7 @@ func TestMiddleware(t *testing.T) { }, }, { - Name: "forbidden path acces", + Name: "forbidden path access", Type: "access", Paths: []string{"/", "/admin"}, Rule: BasicRuleMiddleware{ diff --git a/pkg/route.go b/pkg/route.go index 009d7ac..0f7cff8 100644 --- a/pkg/route.go +++ b/pkg/route.go @@ -23,6 +23,7 @@ import ( "time" ) +// Initialize the routes func (gatewayServer GatewayServer) Initialize() *mux.Router { gateway := gatewayServer.gateway middlewares := gatewayServer.middlewares @@ -31,9 +32,13 @@ func (gatewayServer GatewayServer) Initialize() *mux.Router { DisableRouteHealthCheckError: gateway.DisableRouteHealthCheckError, Routes: gateway.Routes, } - // Define the health check route - r.HandleFunc("/healthz", heath.HealthCheckHandler).Methods("GET") + // Routes health check + if !gateway.DisableHealthCheckStatus { + r.HandleFunc("/healthz", heath.HealthCheckHandler).Methods("GET") + } + // Readiness r.HandleFunc("/readyz", heath.HealthReadyHandler).Methods("GET") + if gateway.RateLimiter != 0 { //rateLimiter := middleware.NewRateLimiter(gateway.RateLimiter, time.Minute) limiter := middleware.NewRateLimiterWindow(gateway.RateLimiter, time.Minute) // requests per minute