Route
The Route allows you to match on HTTP traffic and direct it to the backend.
Configuration Options
This section outlines the available configuration options for defining routes in the Gateway.
Route Configuration
path
(string
): The route path (e.g.,/api/v1/resource
).name
(string
): A unique name for the route.disabled
(boolean
): Disables the route, the route will not be proxied.hosts
(list of strings
): A list of allowed hostnames for the route.rewrite
(string
): Updates the incoming route path to a specified new path.- For more advanced use cases involving pattern matching or regular expressions, consider using the
redirectRegex
middleware instead.
- For more advanced use cases involving pattern matching or regular expressions, consider using the
methods
(array of strings
): A list of allowed HTTP methods (e.g.,GET
,POST
).destination
(string
): The backend endpoint for the route.backends
(list of strings
): A list of backend services for load balancing.insecureSkipVerify
(boolean
): Disables backend TLS certificate verification.
Health Check Configuration
healthCheck
:path
(string
): The health check path (e.g.,/health
).interval
(string
, default:30s
): The interval between health checks.timeout
(string
, default:10s
): The maximum time to wait for a health check response.healthyStatuses
(array of integers
): A list of HTTP status codes considered healthy.
CORS Configuration
cors
:origins
(array of strings
): A list of allowed origins for Cross-Origin Resource Sharing (CORS).headers
(array of strings
): A list of custom headers to include in responses.
Error Interceptor
enabled
(boolean
): Determines whether the backend error interceptor is active.
Default:false
contentType
(string
): Specifies theContent-Type
header of the response, such asapplication/json
ortext/plain
.errors
(array
): A collection of error configurations defining which HTTP status codes to intercept and their corresponding custom responses.
Additional Options
disableHostForwarding
(boolean
): Disables proxy host forwarding for improved security.blockCommonExploits
(boolean
): Enables or disables blocking of common exploits.enableBotDetection
(boolean
): Enables or disables bot detection, protect route from bots by blocking requests from known bots.middlewares
(array of strings
): A list of middleware names applied to the route.
Simple route
version: 1.0
gateway:
...
routes:
- name: Example
path: /store/cart
rewrite: /cart # You can use RegexRewrite middleware for more complex rewrites
destination: http://cart-service:8080
cors: {}
Route with limited HTTP methods
The proxy will allow all HTTP methods if there’s no defined method.
Example of route with limited HTTP methods allowed for a particular route.
version: 1.0
gateway:
...
routes:
- name: Example
path: /store/cart
destination: http://cart-service:8080
methods: [PATCH, GET]
cors: {}
middlewares:
- api-forbidden-paths
- jwt-auth
Route with healthcheck
Example of route with backend health check.
version: 1.0
gateway:
...
routes:
- name: Example
path: /store/cart
destination: http://cart-service:8080
methods: [PATCH, GET]
healthCheck:
path: "/health/live"
interval: 0
timeout: 0
healthyStatuses: [200,404]
cors: {}
Route with middleware
Example of route with backend health check.
version: 1.0
gateway:
...
routes:
- name: Example
path: /store/cart
rewrite: /cart
destination: http://cart-service:8080
methods: []
healthCheck:
path: "/health/live"
interval: 0
timeout: 0
healthyStatuses: [200,404]
cors: {}
## Middleware
middlewares:
- api-forbidden-paths
- jwt-auth
Route with backend errors interceptor
Example of route with backend errors interceptor.
version: 1.0
gateway:
...
routes:
- name: Example
path: /store/cart
rewrite: /cart
destination: http://cart-service:8080
methods: []
healthCheck:
path: "/health/live"
interval: 0
timeout: 0
healthyStatuses: [200,404]
errorInterceptor:
enabled: true
contentType: "application/json"
errors:
- code: 401
body: ""
- code: 500
body: "Internal server error"
blockCommonExploits: false
cors: {}
## Middleware
middlewares:
- api-forbidden-paths
- jwt-auth
Route with enabled load balancing
Example of route with load balancing enabled.
version: 1.0
gateway:
...
routes:
- name: Example
path: /store/cart
rewrite: /cart
## destination: will be override by backends
destination: ""
backends:
- https://example.com
- https://example2.com
- https://example4.com
insecureSkipVerify: true
methods: []
healthCheck:
path: "/health/live"
interval: 0
timeout: 0
healthyStatuses: [200,404]
blockCommonExploits: false
cors: {}
## Middleware
middlewares:
- api-forbidden-paths
- jwt-auth