News KrakenD CE v2.6 released with OpenTelemetry

Enterprise Documentation

Recent changes

HTTP Server Settings in KrakenD API Gateway

Document updated on Feb 16, 2022

KrakenD starts an HTTP server to offer the API Gateway server. You can personalize some of the settings used to start the service and also override the default settings of the underlying Go standard library.

If you want to customize any of the settings below, they must be written at the top level of the configuration.

Fields of
* required fields
cache_ttl

string
Sets a default Cache-Control: public, max-age=%d header to all endpoints where %d is the conversion to seconds of any duration you write, indicating for how long the client (or CDN) can cache the content of the request. You can override this value per endpoint, but setting an endpoint to 0 will use the default value instead. Notice that KrakenD does not cache the content with this parameter, but tells the client how to do it. Defaults to 0s (no cache). For KrakenD cache, see backend caching.
Valid duration units are: ns (nanosec.), us or µs (microsec.), ms (millisec.), s (sec.), m (minutes), h (hours).
Defaults to "0s"
idle_timeout

string
The maximum amount of time to wait for the next request when keep-alives are enabled. If idle_timeout is zero, the value of read_timeout is used. If both are zero, there is no timeout.
Valid duration units are: ns (nanosec.), us or µs (microsec.), ms (millisec.), s (sec.), m (minutes), h (hours).
Defaults to "0s"
listen_ip

string
The IP address that KrakenD listens to in IPv4 or IPv6. An empty string, or no declaration at all means listening on all interfaces. The inclusion of :: is meant for IPv6 format only (this is not the port). Examples of valid addresses are 192.0.2.1 (IPv4), 2001:db8::68 (IPv6). The values :: and 0.0.0.0 listen to all addresses and both are valid for IPv4 and IPv6 simultaneously.
Example: "172.12.1.1" , "::1"
Defaults to "0.0.0.0"
port

integer
The TCP port where KrakenD is listening to. Recommended value is in the range 1024-65535 to run as an unpriviliged user
Defaults to 8080
read_header_timeout

string
The amount of time allowed to read request headers. The connection’s read deadline is reset after reading the headers and the Handler can decide what is considered too slow for the body.
Valid duration units are: ns (nanosec.), us or µs (microsec.), ms (millisec.), s (sec.), m (minutes), h (hours).
Defaults to "0s"
read_timeout

string
Is the maximum duration for reading the entire request, including the body. Because read_timeout does not let Handlers make per-request decisions on each request body’s acceptable deadline or upload rate, most users will prefer to use read_header_timeout. It is valid to use them both.
Valid duration units are: ns (nanosec.), us or µs (microsec.), ms (millisec.), s (sec.), m (minutes), h (hours).
Defaults to "0s"
sequential_start

boolean
A sequential start registers all async agents in order, allowing you to have the starting logs in sequential order. A non-sequential start is much faster, but logs are harder to follow.
Defaults to false
use_h2c

boolean
Enable the support for HTTP/2 with no TLS (clear text). This option is less secure and less performant, use with caution.
Defaults to false
write_timeout

string
Maximum duration before timing out writes of the response.
Valid duration units are: ns (nanosec.), us or µs (microsec.), ms (millisec.), s (sec.), m (minutes), h (hours).
Defaults to "0s"

Override settings using environment vars

When you declare in the configuration file any of the HTTP server settings declared above, you can override its value through environment variables when starting the server.

All the environment variables have the same name are the same settings above in uppercase and with the KRAKEND_ preffix. For instance, looking at the list of settings above, you could override:

  • KRAKEND_PORT
  • KRAKEND_READ_TIMEOUT
  • KRAKEND_READ_HEADER_TIMEOUT
  • KRAKEND_WRITE_TIMEOUT
  • KRAKEND_IDLE_TIMEOUT
  • KRAKEND_USE_H2C
  • etc…

You can start KrakenD with the desired variables to override what you have in the configuration:

Term 
$KRAKEND_PORT=8000 KRAKEND_READ_TIMEOUT="1s" krakend run -c krakend.json
Scarf

Unresolved issues?

The documentation is only a piece of the help you can get! Whether you are looking for Open Source or Enterprise support, see more support channels that can help you.

We use cookies to understand how you use our site and to improve your overall experience. By continuing to use our site, you accept our Privacy Policy. More information