Tyk Gateway Configuration Options

Last updated: 35 minutes read.

You can use environment variables to override the config file for the Tyk Gateway. The Gateway configuration file can be found in the tyk-gateway folder and by default is called tyk.conf, though it can be renamed and specified using the --conf flag. Environment variables are created from the dot notation versions of the JSON objects contained with the config files. To understand how the environment variables notation works, see Environment Variables.

All the Gateway environment variables have the prefix TYK_GW_. The environment variables will take precedence over the values in the configuration file.

tyk lint

In v2.4 we have added a new tyk lint command which will validate your tyk.conf file and validate it for syntax correctness, misspelled attribute names or format of values. The Syntax can be:

tyk lint or tyk --conf=path lint

If --conf is not used, the first of the following paths to exist is used:

./tyk.conf /etc/tyk/tyk.conf

hostname

EV: TYK_GW_HOSTNAME
Type: string

Force your Gateway to work only on a specific domain name. Can be overridden by API custom domain.

listen_address

EV: TYK_GW_LISTENADDRESS
Type: string

If your machine has multiple network devices or IPs you can force the Gateway to use the IP address you want.

listen_port

EV: TYK_GW_LISTENPORT
Type: int

Setting this value will change the port that Tyk listens on. Default: 8080.

control_api_hostname

EV: TYK_GW_CONTROLAPIHOSTNAME
Type: string

Custom hostname for the Control API

control_api_port

EV: TYK_GW_CONTROLAPIPORT
Type: int

Set to run your Gateway Control API on a separate port, and protect it behind a firewall if needed. Please make sure you follow this guide when setting the control port https://tyk.io/docs/planning-for-production/#change-your-control-port.

secret

EV: TYK_GW_SECRET
Type: string

This should be changed as soon as Tyk is installed on your system. This value is used in every interaction with the Tyk Gateway API. It should be passed along as the X-Tyk-Authorization header in any requests made. Tyk assumes that you are sensible enough not to expose the management endpoints publicly and to keep this configuration value to yourself.

node_secret

EV: TYK_GW_NODESECRET
Type: string

The shared secret between the Gateway and the Dashboard to ensure that API Definition downloads, heartbeat and Policy loads are from a valid source.

pid_file_location

EV: TYK_GW_PIDFILELOCATION
Type: string

Linux PID file location. Do not change unless you know what you are doing. Default: /var/run/tyk/tyk-gateway.pid

allow_insecure_configs

EV: TYK_GW_ALLOWINSECURECONFIGS
Type: bool

Can be set to disable Dashboard message signature verification. When set to true, public_key_path can be ignored.

public_key_path

EV: TYK_GW_PUBLICKEYPATH
Type: string

While communicating with the Dashboard. By default, all messages are signed by a private/public key pair. Set path to public key.

allow_remote_config

EV: TYK_GW_ALLOWREMOTECONFIG
Type: bool

Allow your Dashboard to remotely set Gateway configuration via the Nodes screen.

security

Global Certificate configuration

security.private_certificate_encoding_secret

EV: TYK_GW_SECURITY_PRIVATECERTIFICATEENCODINGSECRET
Type: string

Set the AES256 secret which is used to encode certificate private keys when they uploaded via certificate storage

security.control_api_use_mutual_tls

EV: TYK_GW_SECURITY_CONTROLAPIUSEMUTUALTLS
Type: bool

Enable Gateway Control API to use Mutual TLS. Certificates can be set via security.certificates.control_api section

security.pinned_public_keys

EV: TYK_GW_SECURITY_PINNEDPUBLICKEYS
Type: map[string]string

Specify public keys used for Certificate Pinning on global level.

security.certificates.upstream

EV: TYK_GW_SECURITY_CERTIFICATES_UPSTREAM
Type: map[string]string

Specify upstream mutual TLS certificates at a global level in the following format: `{ “”: “” }``

security.certificates.control_api

EV: TYK_GW_SECURITY_CERTIFICATES_CONTROLAPI
Type: []string

Certificates used for Control API Mutual TLS

security.certificates.dashboard_api

EV: TYK_GW_SECURITY_CERTIFICATES_DASHBOARD
Type: []string

Used for communicating with the Dashboard if it is configured to use Mutual TLS

security.certificates.mdcb_api

EV: TYK_GW_SECURITY_CERTIFICATES_MDCB
Type: []string

Certificates used for MDCB Mutual TLS

http_server_options

Gateway HTTP server configuration

http_server_options.read_timeout

EV: TYK_GW_HTTPSERVEROPTIONS_READTIMEOUT
Type: int

API Consumer -> Gateway network read timeout. Not setting this config, or setting this to 0, defaults to 120 seconds

http_server_options.write_timeout

EV: TYK_GW_HTTPSERVEROPTIONS_WRITETIMEOUT
Type: int

API Consumer -> Gateway network write timeout. Not setting this config, or setting this to 0, defaults to 120 seconds

http_server_options.use_ssl

EV: TYK_GW_HTTPSERVEROPTIONS_USESSL
Type: bool

Set to true to enable SSL connections

http_server_options.enable_http2

EV: TYK_GW_HTTPSERVEROPTIONS_ENABLEHTTP2
Type: bool

Enable HTTP2 protocol handling

http_server_options.enable_strict_routes

EV: TYK_GW_HTTPSERVEROPTIONS_ENABLESTRICTROUTES
Type: bool

EnableStrictRoutes changes the routing to avoid nearest-neighbour requests on overlapping routes

  • if disabled, /apple will route to /app, the current default behavior,
  • if enabled, /app only responds to /app, /app/ and /app/* but not /apple

Regular expressions and parameterized routes will be left alone regardless of this setting.

http_server_options.ssl_insecure_skip_verify

EV: TYK_GW_HTTPSERVEROPTIONS_SSLINSECURESKIPVERIFY
Type: bool

Disable TLS verification. Required if you are using self-signed certificates.

http_server_options.enable_websockets

EV: TYK_GW_HTTPSERVEROPTIONS_ENABLEWEBSOCKETS
Type: bool

Enabled WebSockets and server side events support

http_server_options.certificates

EV: TYK_GW_HTTPSERVEROPTIONS_CERTIFICATES
Type: CertsData

Deprecated. SSL certificates used by Gateway server.

http_server_options.ssl_certificates

EV: TYK_GW_HTTPSERVEROPTIONS_SSLCERTIFICATES
Type: []string

SSL certificates used by your Gateway server. A list of certificate IDs or path to files.

http_server_options.server_name

EV: TYK_GW_HTTPSERVEROPTIONS_SERVERNAME
Type: string

Start your Gateway HTTP server on specific server name

http_server_options.min_version

EV: TYK_GW_HTTPSERVEROPTIONS_MINVERSION
Type: uint16

Minimum TLS version. Possible values: https://tyk.io/docs/basic-config-and-security/security/tls-and-ssl/#values-for-tls-versions

http_server_options.max_version

EV: TYK_GW_HTTPSERVEROPTIONS_MAXVERSION
Type: uint16

Maximum TLS version.

http_server_options.skip_client_ca_announcement

EV: TYK_GW_HTTPSERVEROPTIONS_SKIPCLIENTCAANNOUNCEMENT
Type: bool

When mTLS enabled, this option allows to skip client CA announcement in the TLS handshake. This option is useful when you have a lot of ClientCAs and you want to reduce the handshake overhead, as some clients can hit TLS handshake limits. This option does not give any hints to the client, on which certificate to pick (but this is very rare situation when it is required)

http_server_options.flush_interval

EV: TYK_GW_HTTPSERVEROPTIONS_FLUSHINTERVAL
Type: int

Set this to the number of seconds that Tyk uses to flush content from the proxied upstream connection to the open downstream connection. This option needed be set for streaming protocols like Server Side Events, or gRPC streaming.

http_server_options.skip_url_cleaning

EV: TYK_GW_HTTPSERVEROPTIONS_SKIPURLCLEANING
Type: bool

Allow the use of a double slash in a URL path. This can be useful if you need to pass raw URLs to your API endpoints. For example: http://myapi.com/get/http://example.com.

http_server_options.skip_target_path_escaping

EV: TYK_GW_HTTPSERVEROPTIONS_SKIPTARGETPATHESCAPING
Type: bool

Disable automatic character escaping, allowing to path original URL data to the upstream.

http_server_options.ssl_ciphers

EV: TYK_GW_HTTPSERVEROPTIONS_CIPHERS
Type: []string

Custom SSL ciphers. See list of ciphers here https://tyk.io/docs/basic-config-and-security/security/tls-and-ssl/#specify-tls-cipher-suites-for-tyk-gateway--tyk-dashboard

http_server_options.max_request_body_size

EV: TYK_GW_HTTPSERVEROPTIONS_MAXREQUESTBODYSIZE
Type: int64

MaxRequestBodySize configures a maximum size limit for request body size (in bytes) for all APIs on the Gateway.

Tyk Gateway will evaluate all API requests against this size limit and will respond with HTTP 413 status code if the body of the request is larger.

Two methods are used to perform the comparison:

  • If the API Request contains the Content-Length header, this is directly compared against MaxRequestBodySize.
  • If the Content-Length header is not provided, the Request body is read in chunks to compare total size against MaxRequestBodySize.

A value of zero (default) means that no maximum is set and API requests will not be tested.

See more information about setting request size limits here: https://tyk.io/docs/basic-config-and-security/control-limit-traffic/request-size-limits/#maximum-request-sizes

version_header

EV: TYK_GW_VERSIONHEADER
Type: string

Expose version header with a given name. Works only for versioned APIs.

suppress_redis_signal_reload

EV: TYK_GW_SUPPRESSREDISSIGNALRELOAD
Type: bool

Disable dynamic API and Policy reloads, e.g. it will load new changes only on procecss start.

reload_interval

EV: TYK_GW_RELOADINTERVAL
Type: int64

ReloadInterval defines a duration in seconds within which the gateway responds to a reload event. The value defaults to 1, values lower than 1 are ignored.

hash_keys

EV: TYK_GW_HASHKEYS
Type: bool

Enable Key hashing

disable_key_actions_by_username

EV: TYK_GW_DISABLEKEYACTIONSBYUSERNAME
Type: bool

DisableKeyActionsByUsername disables key search by username. When this is set to true you are able to search for keys only by keyID or key hash (if hash_keys is also set to true) Note that if hash_keys is also set to true then the keyID will not be provided for APIs secured using basic auth. In this scenario the only search option would be to use key hash If you are using the Tyk Dashboard, you must configure this setting with the same value in both Gateway and Dashboard

hash_key_function

EV: TYK_GW_HASHKEYFUNCTION
Type: string

Specify the Key hashing algorithm. Possible values: murmur64, murmur128, sha256.

basic_auth_hash_key_function

EV: TYK_GW_BASICAUTHHASHKEYFUNCTION
Type: string

Specify the Key hashing algorithm for “basic auth”. Possible values: murmur64, murmur128, sha256, bcrypt. Will default to “bcrypt” if not set.

hash_key_function_fallback

EV: TYK_GW_HASHKEYFUNCTIONFALLBACK
Type: []string

Specify your previous key hashing algorithm if you migrated from one algorithm to another.

enable_hashed_keys_listing

EV: TYK_GW_ENABLEHASHEDKEYSLISTING
Type: bool

Allows the listing of hashed API keys

min_token_length

EV: TYK_GW_MINTOKENLENGTH
Type: int

Minimum API token length

template_path

EV: TYK_GW_TEMPLATEPATH
Type: string

Path to error and webhook templates. Defaults to the current binary path.

policies

The policies section allows you to define where Tyk can find its policy templates. Policy templates are similar to key definitions in that they allow you to set quotas, access rights and rate limits for keys. Policies are loaded when Tyk starts and if changed require a hot-reload so they are loaded into memory. A policy can be defined in a file (Open Source installations) or from the same database as the Dashboard.

policies.policy_source

EV: TYK_GW_POLICIES_POLICYSOURCE
Type: string

Set this value to file to look in the file system for a definition file. Set to service to use the Dashboard service.

policies.policy_connection_string

EV: TYK_GW_POLICIES_POLICYCONNECTIONSTRING
Type: string

This option is required if policies.policy_source is set to service. Set this to the URL of your Tyk Dashboard installation. The URL needs to be formatted as: http://dashboard_host:port.

policies.policy_record_name

EV: TYK_GW_POLICIES_POLICYRECORDNAME
Type: string

This option is required if policies.policy_source is set to file. Specifies the path of your JSON file containing the available policies.

policies.allow_explicit_policy_id

EV: TYK_GW_POLICIES_ALLOWEXPLICITPOLICYID
Type: bool

In a Pro installation, Tyk will load Policy IDs and use the internal object-ID as the ID of the policy. This is not portable in cases where the data needs to be moved from installation to installation.

If you set this value to true, then the id parameter in a stored policy (or imported policy using the Dashboard API), will be used instead of the internal ID.

This option should only be used when moving an installation to a new database.

policies.policy_path

EV: TYK_GW_POLICIES_POLICYPATH
Type: string

This option is used for storing a policies if policies.policy_source is set to file. it should be some existing file path on hard drive

ports_whitelist

EV: TYK_GW_PORTWHITELIST
Type: PortsWhiteList

Defines the ports that will be available for the API services to bind to in the following format: "{“":“”}". Remember to escape JSON strings. This is a map of protocol to PortWhiteList. This allows per protocol configurations.

disable_ports_whitelist

EV: TYK_GW_DISABLEPORTWHITELIST
Type: bool

Disable port whilisting, essentially allowing you to use any port for your API.

app_path

EV: TYK_GW_APPPATH
Type: string

If Tyk is being used in its standard configuration (Open Source installations), then API definitions are stored in the apps folder (by default in /opt/tyk-gateway/apps). This location is scanned for .json files and re-scanned at startup or reload. See the API section of the Tyk Gateway API for more details.

use_db_app_configs

EV: TYK_GW_USEDBAPPCONFIGS
Type: bool

If you are a Tyk Pro user, this option will enable polling the Dashboard service for API definitions. On startup Tyk will attempt to connect and download any relevant application configurations from from your Dashboard instance. The files are exactly the same as the JSON files on disk with the exception of a BSON ID supplied by the Dashboard service.

db_app_conf_options

This section defines API loading and shard options. Enable these settings to selectively load API definitions on a node from your Dashboard service.

db_app_conf_options.connection_string

EV: TYK_GW_DBAPPCONFOPTIONS_CONNECTIONSTRING
Type: string

Set the URL to your Dashboard instance (or a load balanced instance). The URL needs to be formatted as: http://dashboard_host:port

db_app_conf_options.connection_timeout

EV: TYK_GW_DBAPPCONFOPTIONS_CONNECTIONTIMEOUT
Type: int

Set a timeout value, in seconds, for your Dashboard connection. Default value is 30.

db_app_conf_options.node_is_segmented

EV: TYK_GW_DBAPPCONFOPTIONS_NODEISSEGMENTED
Type: bool

Set to true to enable filtering (sharding) of APIs.

db_app_conf_options.tags

EV: TYK_GW_DBAPPCONFOPTIONS_TAGS
Type: []string

The tags to use when filtering (sharding) Tyk Gateway nodes. Tags are processed as OR operations. If you include a non-filter tag (e.g. an identifier such as node-id-1, this will become available to your Dashboard analytics).

storage

This section defines your Redis configuration.

storage.type

EV: TYK_GW_STORAGE_TYPE
Type: string

This should be set to redis (lowercase)

storage.host

EV: TYK_GW_STORAGE_HOST
Type: string

The Redis host, by default this is set to localhost, but for production this should be set to a cluster.

storage.port

EV: TYK_GW_STORAGE_PORT
Type: int

The Redis instance port.

storage.addrs

EV: TYK_GW_STORAGE_ADDRS
Type: []string

If you have multi-node setup, you should use this field instead. For example: [“host1:port1”, “host2:port2”].

storage.master_name

EV: TYK_GW_STORAGE_MASTERNAME
Type: string

Redis sentinel master name

storage.sentinel_password

EV: TYK_GW_STORAGE_SENTINELPASSWORD
Type: string

Redis sentinel password

storage.username

EV: TYK_GW_STORAGE_USERNAME
Type: string

Redis user name

storage.password

EV: TYK_GW_STORAGE_PASSWORD
Type: string

If your Redis instance has a password set for access, you can set it here.

storage.database

EV: TYK_GW_STORAGE_DATABASE
Type: int

Redis database

storage.optimisation_max_idle

EV: TYK_GW_STORAGE_MAXIDLE
Type: int

Set the number of maximum idle connections in the Redis connection pool, which defaults to 100. Set to a higher value if you are expecting more traffic.

storage.optimisation_max_active

EV: TYK_GW_STORAGE_MAXACTIVE
Type: int

Set the number of maximum connections in the Redis connection pool, which defaults to 500. Set to a higher value if you are expecting more traffic.

storage.timeout

EV: TYK_GW_STORAGE_TIMEOUT
Type: int

Set a custom timeout for Redis network operations. Default value 5 seconds.

storage.enable_cluster

EV: TYK_GW_STORAGE_ENABLECLUSTER
Type: bool

Enable Redis Cluster support

storage.use_ssl

EV: TYK_GW_STORAGE_USESSL
Type: bool

Enable SSL/TLS connection between your Tyk Gateway & Redis.

storage.ssl_insecure_skip_verify

EV: TYK_GW_STORAGE_SSLINSECURESKIPVERIFY
Type: bool

Disable TLS verification

disable_dashboard_zeroconf

EV: TYK_GW_DISABLEDASHBOARDZEROCONF
Type: bool

Disable the capability of the Gateway to autodiscover the Dashboard through heartbeat messages via Redis. The goal of zeroconf is auto-discovery, so you do not have to specify the Tyk Dashboard address in your Gatewaytyk.conf file. In some specific cases, for example, when the Dashboard is bound to a public domain, not accessible inside an internal network, or similar, disable_dashboard_zeroconf can be set to true, in favour of directly specifying a Tyk Dashboard address.

slave_options

The slave_options allow you to configure the RPC slave connection required for MDCB installations. These settings must be configured for every RPC slave/worker node.

slave_options.use_rpc

EV: TYK_GW_SLAVEOPTIONS_USERPC
Type: bool

Set to true to connect a worker Gateway using RPC.

slave_options.use_ssl

EV: TYK_GW_SLAVEOPTIONS_USESSL
Type: bool

Set this option to true to use an SSL RPC connection.

slave_options.ssl_insecure_skip_verify

EV: TYK_GW_SLAVEOPTIONS_SSLINSECURESKIPVERIFY
Type: bool

Set this option to true to allow the certificate validation (certificate chain and hostname) to be skipped. This can be useful if you use a self-signed certificate.

slave_options.connection_string

EV: TYK_GW_SLAVEOPTIONS_CONNECTIONSTRING
Type: string

Use this setting to add the URL for your MDCB or load balancer host.

slave_options.rpc_key

EV: TYK_GW_SLAVEOPTIONS_RPCKEY
Type: string

Your organisation ID to connect to the MDCB installation.

slave_options.api_key

EV: TYK_GW_SLAVEOPTIONS_APIKEY
Type: string

This the API key of a user used to authenticate and authorise the Gateway’s access through MDCB. The user should be a standard Dashboard user with minimal privileges so as to reduce any risk if the user is compromised. The suggested security settings are read for Real-time notifications and the remaining options set to deny.

slave_options.enable_rpc_cache

EV: TYK_GW_SLAVEOPTIONS_ENABLERPCCACHE
Type: bool

Set this option to true to enable RPC caching for keys.

slave_options.disable_keyspace_sync

EV: TYK_GW_SLAVEOPTIONS_DISABLEKEYSPACESYNC
Type: bool

Set this option to true if you don’t want to monitor changes in the keys from a master Gateway.

slave_options.group_id

EV: TYK_GW_SLAVEOPTIONS_GROUPID
Type: string

This is the zone that this instance inhabits, e.g. the cluster/data-centre the Gateway lives in. The group ID must be the same across all the Gateways of a data-centre/cluster which are also sharing the same Redis instance. This ID should also be unique per cluster (otherwise another Gateway cluster can pick up your keyspace events and your cluster will get zero updates).

slave_options.call_timeout

EV: TYK_GW_SLAVEOPTIONS_CALLTIMEOUT
Type: int

Call Timeout allows to specify a time in seconds for the maximum allowed duration of a RPC call.

slave_options.ping_timeout

EV: TYK_GW_SLAVEOPTIONS_PINGTIMEOUT
Type: int

The maximum time in seconds that a RPC ping can last.

slave_options.rpc_pool_size

EV: TYK_GW_SLAVEOPTIONS_RPCPOOLSIZE
Type: int

The number of RPC connections in the pool. Basically it creates a set of connections that you can re-use as needed. Defaults to 5.

slave_options.key_space_sync_interval

EV: TYK_GW_SLAVEOPTIONS_KEYSPACESYNCINTERVAL
Type: float32

You can use this to set a period for which the Gateway will check if there are changes in keys that must be synchronized. If this value is not set then it will default to 10 seconds.

slave_options.rpc_cert_cache_expiration

EV: TYK_GW_SLAVEOPTIONS_RPCCERTCACHEEXPIRATION
Type: float32

RPCCertCacheExpiration defines the expiration time of the rpc cache that stores the certificates, defined in seconds

slave_options.rpc_global_cache_expiration

EV: TYK_GW_SLAVEOPTIONS_RPCGLOBALCACHEEXPIRATION
Type: float32

RPCKeysCacheExpiration defines the expiration time of the rpc cache that stores the keys, defined in seconds

slave_options.synchroniser_enabled

EV: TYK_GW_SLAVEOPTIONS_SYNCHRONISERENABLED
Type: bool

SynchroniserEnabled enable this config if MDCB has enabled the synchoniser. If disabled then it will ignore signals to synchonise recources

management_node

EV: TYK_GW_MANAGEMENTNODE
Type: bool

If set to true, distributed rate limiter will be disabled for this node, and it will be excluded from any rate limit calculation.

Note

If you set db_app_conf_options.node_is_segmented to true for multiple Gateway nodes, you should ensure that management_node is set to false. This is to ensure visibility for the management node across all APIs.

auth_override

This is used as part of the RPC / Hybrid back-end configuration in a Tyk Enterprise installation and isn’t used anywhere else.

enable_redis_rolling_limiter

EV: TYK_GW_ENABLEREDISROLLINGLIMITER
Type: bool

Redis based rate limiter with fixed window. Provides 100% rate limiting accuracy, but require two additional Redis roundtrip for each request.

enable_sentinel_rate_limiter

EV: TYK_GW_ENABLESENTINELRATELIMITER
Type: bool

To enable, set to true. The sentinel-based rate limiter delivers a smoother performance curve as rate-limit calculations happen off-thread, but a stricter time-out based cool-down for clients. For example, when a throttling action is triggered, they are required to cool-down for the period of the rate limit. Disabling the sentinel based rate limiter will make rate-limit calculations happen on-thread and therefore offers a staggered cool-down and a smoother rate-limit experience for the client. For example, you can slow your connection throughput to regain entry into your rate limit. This is more of a “throttle” than a “block”. The standard rate limiter offers similar performance as the sentinel-based limiter. This is disabled by default.

enable_non_transactional_rate_limiter

EV: TYK_GW_ENABLENONTRANSACTIONALRATELIMITER
Type: bool

An enhancement for the Redis and Sentinel rate limiters, that offers a significant improvement in performance by not using transactions on Redis rate-limit buckets.

drl_notification_frequency

EV: TYK_GW_DRLNOTIFICATIONFREQUENCY
Type: int

How frequently a distributed rate limiter synchronises information between the Gateway nodes. Default: 2 seconds.

drl_threshold

EV: TYK_GW_DRLTHRESHOLD
Type: float64

A distributed rate limiter is inaccurate on small rate limits, and it will fallback to a Redis or Sentinel rate limiter on an individual user basis, if its rate limiter lower then threshold. A Rate limiter threshold calculated using the following formula: rate_threshold = drl_threshold * number_of_gateways. So you have 2 Gateways, and your threshold is set to 5, if a user rate limit is larger than 10, it will use the distributed rate limiter algorithm. Default: 5

drl_enable_sentinel_rate_limiter

EV: TYK_GW_DRLENABLESENTINELRATELIMITER
Type: bool

Controls which algorthm to use as a fallback when your distributed rate limiter can’t be used.

enforce_org_data_age

EV: TYK_GW_ENFORCEORGDATAAGE
Type: bool

Allows you to dynamically configure analytics expiration on a per organisation level

enforce_org_data_detail_logging

EV: TYK_GW_ENFORCEORGDATADETAILLOGGING
Type: bool

Allows you to dynamically configure detailed logging on a per organisation level

enforce_org_quotas

EV: TYK_GW_ENFORCEORGQUOTAS
Type: bool

Allows you to dynamically configure organisation quotas on a per organisation level

monitor

The monitor section is useful if you wish to enforce a global trigger limit on organisation and user quotas. This feature will trigger a webhook event to fire when specific triggers are reached. Triggers can be global (set in the node), by organisation (set in the organisation session object) or by key (set in the key session object)

While Organisation-level and Key-level triggers can be tiered (e.g. trigger at 10%, trigger at 20%, trigger at 80%), in the node-level configuration only a global value can be set. If a global value and specific trigger level are the same the trigger will only fire once:

"monitor": {
  "enable_trigger_monitors": true,
  "configuration": {
   "method": "POST",
   "target_path": "http://domain.com/notify/quota-trigger",
   "template_path": "templates/monitor_template.json",
   "header_map": {
     "some-secret": "89787855"
   },
   "event_timeout": 10
 },
 "global_trigger_limit": 80.0,
 "monitor_user_keys": false,
 "monitor_org_keys": true
},

monitor.enable_trigger_monitors

EV: TYK_GW_MONITOR_ENABLETRIGGERMONITORS
Type: bool

Set this to true to have monitors enabled in your configuration for the node.

monitor.configuration.method

EV: TYK_GW_MONITOR_CONFIG_METHOD
Type: string

The method to use for the webhook.

monitor.configuration.target_path

EV: TYK_GW_MONITOR_CONFIG_TARGETPATH
Type: string

The target path on which to send the request.

monitor.configuration.template_path

EV: TYK_GW_MONITOR_CONFIG_TEMPLATEPATH
Type: string

The template to load in order to format the request.

monitor.configuration.header_map

EV: TYK_GW_MONITOR_CONFIG_HEADERLIST
Type: map[string]string

Headers to set when firing the webhook.

monitor.configuration.event_timeout

EV: TYK_GW_MONITOR_CONFIG_EVENTTIMEOUT
Type: int64

The cool-down for the event so it does not trigger again (in seconds).

monitor.global_trigger_limit

EV: TYK_GW_MONITOR_GLOBALTRIGGERLIMIT
Type: float64

The trigger limit, as a percentage of the quota that must be reached in order to trigger the event, any time the quota percentage is increased the event will trigger.

monitor.monitor_user_keys

EV: TYK_GW_MONITOR_MONITORUSERKEYS
Type: bool

Apply the monitoring subsystem to user keys.

monitor.monitor_org_keys

EV: TYK_GW_MONITOR_MONITORORGKEYS
Type: bool

Apply the monitoring subsystem to organisation keys.

max_idle_connections

EV: TYK_GW_MAXIDLECONNS
Type: int

Maximum idle connections, per API, between Tyk and Upstream. By default not limited.

max_idle_connections_per_host

EV: TYK_GW_MAXIDLECONNSPERHOST
Type: int

Maximum idle connections, per API, per upstream, between Tyk and Upstream. Default:100

max_conn_time

EV: TYK_GW_MAXCONNTIME
Type: int64

Maximum connection time. If set it will force gateway reconnect to the upstream.

close_connections

EV: TYK_GW_CLOSECONNECTIONS
Type: bool

If set, disable keepalive between User and Tyk

enable_custom_domains

EV: TYK_GW_ENABLECUSTOMDOMAINS
Type: bool

Allows you to use custom domains

allow_master_keys

EV: TYK_GW_ALLOWMASTERKEYS
Type: bool

If AllowMasterKeys is set to true, session objects (key definitions) that do not have explicit access rights set will be allowed by Tyk. This means that keys that are created have access to ALL APIs, which in many cases is unwanted behaviour unless you are sure about what you are doing.

service_discovery.default_cache_timeout

EV: TYK_GW_SERVICEDISCOVERY_DEFAULTCACHETIMEOUT
Type: int

Service discovery cache timeout

proxy_ssl_insecure_skip_verify

EV: TYK_GW_PROXYSSLINSECURESKIPVERIFY
Type: bool

Globally ignore TLS verification between Tyk and your Upstream services

proxy_enable_http2

EV: TYK_GW_PROXYENABLEHTTP2
Type: bool

Enable HTTP2 support between Tyk and your upstream service. Required for gRPC.

proxy_ssl_min_version

EV: TYK_GW_PROXYSSLMINVERSION
Type: uint16

Minimum TLS version for connection between Tyk and your upstream service.

proxy_ssl_max_version

EV: TYK_GW_PROXYSSLMAXVERSION
Type: uint16

Maximum TLS version for connection between Tyk and your upstream service.

proxy_ssl_ciphers

EV: TYK_GW_PROXYSSLCIPHERSUITES
Type: []string

Whitelist ciphers for connection between Tyk and your upstream service.

proxy_default_timeout

EV: TYK_GW_PROXYDEFAULTTIMEOUT
Type: float64

This can specify a default timeout in seconds for upstream API requests. Default: 30 seconds.

proxy_ssl_disable_renegotiation

EV: TYK_GW_PROXYSSLDISABLERENEGOTIATION
Type: bool

Disable TLS renegotiation.

proxy_close_connections

EV: TYK_GW_PROXYCLOSECONNECTIONS
Type: bool

Disable keepalives between Tyk and your upstream service. Set this value to true to force Tyk to close the connection with the server, otherwise the connections will remain open for as long as your OS keeps TCP connections open. This can cause a file-handler limit to be exceeded. Setting to false can have performance benefits as the connection can be reused.

uptime_tests

Tyk nodes can provide uptime awareness, uptime testing and analytics for your underlying APIs uptime and availability. Tyk can also notify you when a service goes down.

uptime_tests.disable

EV: TYK_GW_UPTIMETESTS_DISABLE
Type: bool

To disable uptime tests on this node, set this value to true.

uptime_tests.poller_group

EV: TYK_GW_UPTIMETESTS_POLLERGROUP
Type: string

If you have multiple Gateway clusters connected to the same Redis instance, you need to set a unique poller group for each cluster.

uptime_tests.config.failure_trigger_sample_size

EV: TYK_GW_UPTIMETESTS_CONFIG_FAILURETRIGGERSAMPLESIZE
Type: int

The sample size to trigger a HostUp or HostDown event. For example, a setting of 3 will require at least three failures to occur before the uptime test is triggered.

uptime_tests.config.time_wait

EV: TYK_GW_UPTIMETESTS_CONFIG_TIMEWAIT
Type: int

The value in seconds between tests runs. All tests will run simultaneously. This value will set the time between those tests. So a value of 60 will run all uptime tests every 60 seconds.

uptime_tests.config.checker_pool_size

EV: TYK_GW_UPTIMETESTS_CONFIG_CHECKERPOOLSIZE
Type: int

The goroutine pool size to keep idle for uptime tests. If you have many uptime tests running at a high time period, then increase this value.

uptime_tests.config.enable_uptime_analytics

EV: TYK_GW_UPTIMETESTS_CONFIG_ENABLEUPTIMEANALYTICS
Type: bool

Set this value to true to have the node capture and record analytics data regarding the uptime tests.

health_check

This section enables the configuration of the health-check API endpoint and the size of the sample data cache (in seconds).

health_check.enable_health_checks

EV: TYK_GW_HEALTHCHECK_ENABLEHEALTHCHECKS
Type: bool

Setting this value to true will enable the health-check endpoint on /Tyk/health.

health_check.health_check_value_timeouts

EV: TYK_GW_HEALTHCHECK_HEALTHCHECKVALUETIMEOUT
Type: int64

This setting defaults to 60 seconds. This is the time window that Tyk uses to sample health-check data. You can set a higher value for more accurate data (a larger sample period), or a lower value for less accurate data. The reason this value is configurable is because sample data takes up space in your Redis DB to store the data to calculate samples. On high-availability systems this may not be desirable and smaller values may be preferred.

health_check_endpoint_name

EV: TYK_GW_HEALTHCHECKENDPOINTNAME
Type: string

Enables you to rename the /hello endpoint

oauth_refresh_token_expire

EV: TYK_GW_OAUTHREFRESHEXPIRE
Type: int64

Change the expiry time of a refresh token. By default 14 days (in seconds).

oauth_token_expire

EV: TYK_GW_OAUTHTOKENEXPIRE
Type: int32

Change the expiry time of OAuth tokens (in seconds).

oauth_token_expired_retain_period

EV: TYK_GW_OAUTHTOKENEXPIREDRETAINPERIOD
Type: int32

Specifies how long expired tokens are stored in Redis. The value is in seconds and the default is 0. Using the default means expired tokens are never removed from Redis.

oauth_redirect_uri_separator

EV: TYK_GW_OAUTHREDIRECTURISEPARATOR
Type: string

Character which should be used as a separator for OAuth redirect URI URLs. Default: ;.

oauth_error_status_code

EV: TYK_GW_OAUTHERRORSTATUSCODE
Type: int

Configures the OAuth error status code returned. If not set, it defaults to a 403 error.

enable_key_logging

EV: TYK_GW_ENABLEKEYLOGGING
Type: bool

By default all key IDs in logs are hidden. Set to true if you want to see them for debugging reasons.

ssl_force_common_name_check

EV: TYK_GW_SSLFORCECOMMONNAMECHECK
Type: bool

Force the validation of the hostname against the common name, even if TLS verification is disabled.

enable_analytics

EV: TYK_GW_ENABLEANALYTICS
Type: bool

Tyk is capable of recording every hit to your API to a database with various filtering parameters. Set this value to true and fill in the sub-section below to enable logging.

Note

For performance reasons, Tyk will store traffic data to Redis initially and then purge the data from Redis to MongoDB or other data stores on a regular basis as determined by the purge_delay setting in your Tyk Pump configuration.

analytics_config

This section defines options on what analytics data to store.

analytics_config.type

EV: TYK_GW_ANALYTICSCONFIG_TYPE
Type: string

Set empty for a Self-Managed installation or rpc for multi-cloud.

analytics_config.ignored_ips

EV: TYK_GW_ANALYTICSCONFIG_IGNOREDIPS
Type: []string

Adding IP addresses to this list will cause Tyk to ignore these IPs in the analytics data. These IP addresses will not produce an analytics log record. This is useful for health checks and other samplers that might skew usage data. The IP addresses must be provided as a JSON array, with the values being single IPs. CIDR values are not supported.

analytics_config.enable_detailed_recording

EV: TYK_GW_ANALYTICSCONFIG_ENABLEDETAILEDRECORDING
Type: bool

Set this value to true to have Tyk store the inbound request and outbound response data in HTTP Wire format as part of the Analytics data. Please note, this will greatly increase your analytics DB size and can cause performance degradation on analytics processing by the Dashboard. This setting can be overridden with an organisation flag, enabed at an API level, or on individual Key level.

analytics_config.enable_geo_ip

EV: TYK_GW_ANALYTICSCONFIG_ENABLEGEOIP
Type: bool

Tyk can store GeoIP information based on MaxMind DB’s to enable GeoIP tracking on inbound request analytics. Set this value to true and assign a DB using the geo_ip_db_path setting.

analytics_config.geo_ip_db_path

EV: TYK_GW_ANALYTICSCONFIG_GEOIPDBLOCATION
Type: string

Path to a MaxMind GeoIP database The analytics GeoIP DB can be replaced on disk. It will cleanly auto-reload every hour.

analytics_config.normalise_urls

This section describes methods that enable you to normalise inbound URLs in your analytics to have more meaningful per-path data.

analytics_config.normalise_urls.enabled

EV: TYK_GW_ANALYTICSCONFIG_NORMALISEURLS_ENABLED
Type: bool

Set this to true to enable normalisation.

analytics_config.normalise_urls.normalise_uuids

EV: TYK_GW_ANALYTICSCONFIG_NORMALISEURLS_NORMALISEUUIDS
Type: bool

Each UUID will be replaced with a placeholder {uuid}

analytics_config.normalise_urls.normalise_ulids

EV: TYK_GW_ANALYTICSCONFIG_NORMALISEURLS_NORMALISEULIDS
Type: bool

Each ULID will be replaced with a placeholder {ulid}

analytics_config.normalise_urls.normalise_numbers

EV: TYK_GW_ANALYTICSCONFIG_NORMALISEURLS_NORMALISENUMBERS
Type: bool

Set this to true to have Tyk automatically match for numeric IDs, it will match with a preceding slash so as not to capture actual numbers:

analytics_config.normalise_urls.custom_patterns

EV: TYK_GW_ANALYTICSCONFIG_NORMALISEURLS_CUSTOM
Type: []string

This is a list of custom patterns you can add. These must be valid regex strings. Tyk will replace these values with a {var} placeholder.

analytics_config.pool_size

EV: TYK_GW_ANALYTICSCONFIG_POOLSIZE
Type: int

Number of workers used to process analytics. Defaults to number of CPU cores.

analytics_config.records_buffer_size

EV: TYK_GW_ANALYTICSCONFIG_RECORDSBUFFERSIZE
Type: uint64

Number of records in analytics queue, per worker. Default: 1000.

analytics_config.storage_expiration_time

EV: TYK_GW_ANALYTICSCONFIG_STORAGEEXPIRATIONTIME
Type: int

You can set a time (in seconds) to configure how long analytics are kept if they are not processed. The default is 60 seconds. This is used to prevent the potential infinite growth of Redis analytics storage.

analytics_config.enable_multiple_analytics_keys

EV: TYK_GW_ANALYTICSCONFIG_ENABLEMULTIPLEANALYTICSKEYS
Type: bool

Set this to true to have Tyk automatically divide the analytics records in multiple analytics keys. This is especially useful when storage.enable_cluster is set to true since it will distribute the analytic keys across all the cluster nodes.

analytics_config.purge_interval

EV: TYK_GW_ANALYTICSCONFIG_PURGEINTERVAL
Type: float32

You can set the interval length on how often the tyk Gateway will purge analytics data. This value is in seconds and defaults to 10 seconds.

analytics_config.serializer_type

EV: TYK_GW_ANALYTICSCONFIG_SERIALIZERTYPE
Type: string

Determines the serialization engine for analytics. Available options: msgpack, and protobuf. By default, msgpack.

enable_separate_analytics_store

EV: TYK_GW_ENABLESEPERATEANALYTICSSTORE
Type: bool

Enable separate analytics storage. Used together with analytics_storage.

analytics_storage.type

EV: TYK_GW_ANALYTICSSTORAGE_TYPE
Type: string

This should be set to redis (lowercase)

analytics_storage.host

EV: TYK_GW_ANALYTICSSTORAGE_HOST
Type: string

The Redis host, by default this is set to localhost, but for production this should be set to a cluster.

analytics_storage.port

EV: TYK_GW_ANALYTICSSTORAGE_PORT
Type: int

The Redis instance port.

analytics_storage.addrs

EV: TYK_GW_ANALYTICSSTORAGE_ADDRS
Type: []string

If you have multi-node setup, you should use this field instead. For example: [“host1:port1”, “host2:port2”].

analytics_storage.master_name

EV: TYK_GW_ANALYTICSSTORAGE_MASTERNAME
Type: string

Redis sentinel master name

analytics_storage.sentinel_password

EV: TYK_GW_ANALYTICSSTORAGE_SENTINELPASSWORD
Type: string

Redis sentinel password

analytics_storage.username

EV: TYK_GW_ANALYTICSSTORAGE_USERNAME
Type: string

Redis user name

analytics_storage.password

EV: TYK_GW_ANALYTICSSTORAGE_PASSWORD
Type: string

If your Redis instance has a password set for access, you can set it here.

analytics_storage.database

EV: TYK_GW_ANALYTICSSTORAGE_DATABASE
Type: int

Redis database

analytics_storage.optimisation_max_idle

EV: TYK_GW_ANALYTICSSTORAGE_MAXIDLE
Type: int

Set the number of maximum idle connections in the Redis connection pool, which defaults to 100. Set to a higher value if you are expecting more traffic.

analytics_storage.optimisation_max_active

EV: TYK_GW_ANALYTICSSTORAGE_MAXACTIVE
Type: int

Set the number of maximum connections in the Redis connection pool, which defaults to 500. Set to a higher value if you are expecting more traffic.

analytics_storage.timeout

EV: TYK_GW_ANALYTICSSTORAGE_TIMEOUT
Type: int

Set a custom timeout for Redis network operations. Default value 5 seconds.

analytics_storage.enable_cluster

EV: TYK_GW_ANALYTICSSTORAGE_ENABLECLUSTER
Type: bool

Enable Redis Cluster support

analytics_storage.use_ssl

EV: TYK_GW_ANALYTICSSTORAGE_USESSL
Type: bool

Enable SSL/TLS connection between your Tyk Gateway & Redis.

analytics_storage.ssl_insecure_skip_verify

EV: TYK_GW_ANALYTICSSTORAGE_SSLINSECURESKIPVERIFY
Type: bool

Disable TLS verification

liveness_check.check_duration

EV: TYK_GW_LIVENESSCHECK_CHECKDURATION
Type: time.Duration

Frequencies of performing interval healthchecks for Redis, Dashboard, and RPC layer. Default: 10 seconds.

dns_cache

This section enables the global configuration of the expireable DNS records caching for your Gateway API endpoints. By design caching affects only http(s), ws(s) protocols APIs and doesn’t affect any plugin/middleware DNS queries.

"dns_cache": {
  "enabled": true, //Turned off by default
  "ttl": 60, //Time in seconds before the record will be removed from cache
  "multiple_ips_handle_strategy": "random" //A strategy, which will be used when dns query will reply with more than 1 ip address per single host.
}

dns_cache.enabled

EV: TYK_GW_DNSCACHE_ENABLED
Type: bool

Setting this value to true will enable caching of DNS queries responses used for API endpoint’s host names. By default caching is disabled.

dns_cache.ttl

EV: TYK_GW_DNSCACHE_TTL
Type: int64

This setting allows you to specify a duration in seconds before the record will be removed from cache after being added to it on the first DNS query resolution of API endpoints. Setting ttl to -1 prevents record from being expired and removed from cache on next check interval.

dns_cache.multiple_ips_handle_strategy

EV: TYK_GW_DNSCACHE_MULTIPLEIPSHANDLESTRATEGY
Type: string

A strategy which will be used when a DNS query will reply with more than 1 IP Address per single host. As a DNS query response IP Addresses can have a changing order depending on DNS server balancing strategy (eg: round robin, geographically dependent origin-ip ordering, etc) this option allows you to not to limit the connection to the first host in a cached response list or prevent response caching.

  • pick_first will instruct your Tyk Gateway to connect to the first IP in a returned IP list and cache the response.
  • random will instruct your Tyk Gateway to connect to a random IP in a returned IP list and cache the response.
  • no_cache will instruct your Tyk Gateway to connect to the first IP in a returned IP list and fetch each addresses list without caching on each API endpoint DNS query.

disable_regexp_cache

EV: TYK_GW_DISABLEREGEXPCACHE
Type: bool

If set to true this allows you to disable the regular expression cache. The default setting is false.

regexp_cache_expire

EV: TYK_GW_REGEXPCACHEEXPIRE
Type: int32

If you set disable_regexp_cache to false, you can use this setting to limit how long the regular expression cache is kept for in seconds. The default is 60 seconds. This must be a positive value. If you set to 0 this uses the default value.

local_session_cache

Tyk can cache some data locally, this can speed up lookup times on a single node and lower the number of connections and operations being done on Redis. It will however introduce a slight delay when updating or modifying keys as the cache must expire. This does not affect rate limiting.

local_session_cache.disable_cached_session_state

EV: TYK_GW_LOCALSESSIONCACHE_DISABLECACHESESSIONSTATE
Type: bool

By default sessions are set to cache. Set this to true to stop Tyk from caching keys locally on the node.

enable_separate_cache_store

EV: TYK_GW_ENABLESEPERATECACHESTORE
Type: bool

Enable to use a separate Redis for cache storage

cache_storage.type

EV: TYK_GW_CACHESTORAGE_TYPE
Type: string

This should be set to redis (lowercase)

cache_storage.host

EV: TYK_GW_CACHESTORAGE_HOST
Type: string

The Redis host, by default this is set to localhost, but for production this should be set to a cluster.

cache_storage.port

EV: TYK_GW_CACHESTORAGE_PORT
Type: int

The Redis instance port.

cache_storage.addrs

EV: TYK_GW_CACHESTORAGE_ADDRS
Type: []string

If you have multi-node setup, you should use this field instead. For example: [“host1:port1”, “host2:port2”].

cache_storage.master_name

EV: TYK_GW_CACHESTORAGE_MASTERNAME
Type: string

Redis sentinel master name

cache_storage.sentinel_password

EV: TYK_GW_CACHESTORAGE_SENTINELPASSWORD
Type: string

Redis sentinel password

cache_storage.username

EV: TYK_GW_CACHESTORAGE_USERNAME
Type: string

Redis user name

cache_storage.password

EV: TYK_GW_CACHESTORAGE_PASSWORD
Type: string

If your Redis instance has a password set for access, you can set it here.

cache_storage.database

EV: TYK_GW_CACHESTORAGE_DATABASE
Type: int

Redis database

cache_storage.optimisation_max_idle

EV: TYK_GW_CACHESTORAGE_MAXIDLE
Type: int

Set the number of maximum idle connections in the Redis connection pool, which defaults to 100. Set to a higher value if you are expecting more traffic.

cache_storage.optimisation_max_active

EV: TYK_GW_CACHESTORAGE_MAXACTIVE
Type: int

Set the number of maximum connections in the Redis connection pool, which defaults to 500. Set to a higher value if you are expecting more traffic.

cache_storage.timeout

EV: TYK_GW_CACHESTORAGE_TIMEOUT
Type: int

Set a custom timeout for Redis network operations. Default value 5 seconds.

cache_storage.enable_cluster

EV: TYK_GW_CACHESTORAGE_ENABLECLUSTER
Type: bool

Enable Redis Cluster support

cache_storage.use_ssl

EV: TYK_GW_CACHESTORAGE_USESSL
Type: bool

Enable SSL/TLS connection between your Tyk Gateway & Redis.

cache_storage.ssl_insecure_skip_verify

EV: TYK_GW_CACHESTORAGE_SSLINSECURESKIPVERIFY
Type: bool

Disable TLS verification

enable_bundle_downloader

EV: TYK_GW_ENABLEBUNDLEDOWNLOADER
Type: bool

Enable downloading Plugin bundles Example:

"enable_bundle_downloader": true,
"bundle_base_url": "http://my-bundle-server.com/bundles/",
"public_key_path": "/path/to/my/pubkey",

bundle_base_url

EV: TYK_GW_BUNDLEBASEURL
Type: string

Is a base URL that will be used to download the bundle. In this example we have bundle-latest.zip specified in the API settings, Tyk will fetch the following URL: http://my-bundle-server.com/bundles/bundle-latest.zip (see the next section for details).

bundle_insecure_skip_verify

EV: TYK_GW_BUNDLEINSECURESKIPVERIFY
Type: bool

Disable TLS validation for bundle URLs

enable_jsvm

EV: TYK_GW_ENABLEJSVM
Type: bool

Set to true if you are using JSVM custom middleware or virtual endpoints.

jsvm_timeout

EV: TYK_GW_JSVMTIMEOUT
Type: int

Set the execution timeout for JSVM plugins and virtal endpoints

disable_virtual_path_blobs

EV: TYK_GW_DISABLEVIRTUALPATHBLOBS
Type: bool

Disable virtual endpoints and the code will not be loaded into the VM when the API definition initialises. This is useful for systems where you want to avoid having third-party code run.

tyk_js_path

EV: TYK_GW_TYKJSPATH
Type: string

Path to the JavaScript file which will be pre-loaded for any JSVM middleware or virtual endpoint. Useful for defining global shared functions.

middleware_path

EV: TYK_GW_MIDDLEWAREPATH
Type: string

Path to the plugins dirrectory. By default is ``./middleware`.

coprocess_options

Configuration options for Python and gRPC plugins.

coprocess_options.enable_coprocess

EV: TYK_GW_COPROCESSOPTIONS_ENABLECOPROCESS
Type: bool

Enable gRPC and Python plugins

coprocess_options.coprocess_grpc_server

EV: TYK_GW_COPROCESSOPTIONS_COPROCESSGRPCSERVER
Type: string

Address of gRPC user

coprocess_options.grpc_recv_max_size

EV: TYK_GW_COPROCESSOPTIONS_GRPCRECVMAXSIZE
Type: int

Maximum message which can be received from a gRPC server

coprocess_options.grpc_send_max_size

EV: TYK_GW_COPROCESSOPTIONS_GRPCSENDMAXSIZE
Type: int

Maximum message which can be sent to gRPC server

coprocess_options.grpc_authority

EV: TYK_GW_COPROCESSOPTIONS_GRPCAUTHORITY
Type: string

Authority used in GRPC connection

coprocess_options.python_path_prefix

EV: TYK_GW_COPROCESSOPTIONS_PYTHONPATHPREFIX
Type: string

Sets the path to built-in Tyk modules. This will be part of the Python module lookup path. The value used here is the default one for most installations.

coprocess_options.python_version

EV: TYK_GW_COPROCESSOPTIONS_PYTHONVERSION
Type: string

If you have multiple Python versions installed you can specify your version.

ignore_endpoint_case

EV: TYK_GW_IGNOREENDPOINTCASE
Type: bool

Ignore the case of any endpoints for APIs managed by Tyk. Setting this to true will override any individual API and Ignore, Blacklist and Whitelist plugin endpoint settings.

ignore_canonical_mime_header_key

EV: TYK_GW_IGNORECANONICALMIMEHEADERKEY
Type: bool

When enabled Tyk ignores the canonical format of the MIME header keys.

For example when a request header with a “my-header” key is injected using “global_headers”, the upstream would typically get it as “My-Header”. When this flag is enabled it will be sent as “my-header” instead.

Current support is limited to JavaScript plugins, global header injection, virtual endpoint and JQ transform header rewrites. This functionality doesn’t affect headers that are sent by the HTTP client and the default formatting will apply in this case.

For technical details refer to the CanonicalMIMEHeaderKey functionality in the Go documentation.

log_level

EV: TYK_GW_LOGLEVEL
Type: string

You can now set a logging level (log_level). The following levels can be set: debug, info, warn, error. If not set or left empty, it will default to info.

tracing

Section for configuring OpenTracing support Deprecated: use OpenTelemetry instead.

tracing.name

EV: TYK_GW_TRACER_NAME
Type: string

The name of the tracer to initialize. For instance appdash, to use appdash tracer

tracing.enabled

EV: TYK_GW_TRACER_ENABLED
Type: bool

Enable tracing

tracing.options

EV: TYK_GW_TRACER_OPTIONS
Type: map[string]interface{}

Tracing configuration. Refer to the Tracing Docs for the full list of options.

opentelemetry

Section for configuring OpenTelemetry.

opentelemetry.enabled

EV: TYK_GW_OPENTELEMETRY_ENABLED
Type: bool

A flag that can be used to enable or disable the trace exporter.

opentelemetry.exporter

EV: TYK_GW_OPENTELEMETRY_EXPORTER
Type: string

The type of the exporter to sending data in OTLP protocol. This should be set to the same type of the OpenTelemetry collector. Valid values are “grpc”, or “http”. Defaults to “grpc”.

opentelemetry.endpoint

EV: TYK_GW_OPENTELEMETRY_ENDPOINT
Type: string

OpenTelemetry collector endpoint to connect to. Defaults to “localhost:4317”.

opentelemetry.headers

EV: TYK_GW_OPENTELEMETRY_HEADERS
Type: map[string]string

A map of headers that will be sent with HTTP requests to the collector.

opentelemetry.connection_timeout

EV: TYK_GW_OPENTELEMETRY_CONNECTIONTIMEOUT
Type: int

Timeout for establishing a connection to the collector. Defaults to 1 second.

opentelemetry.resource_name

EV: TYK_GW_OPENTELEMETRY_RESOURCENAME
Type: string

Name of the resource that will be used to identify the resource. Defaults to “tyk”.

opentelemetry.span_processor_type

EV: TYK_GW_OPENTELEMETRY_SPANPROCESSORTYPE
Type: string

Type of the span processor to use. Valid values are “simple” or “batch”. Defaults to “batch”.

opentelemetry.context_propagation

EV: TYK_GW_OPENTELEMETRY_CONTEXTPROPAGATION
Type: string

Type of the context propagator to use. Valid values are:

  • “tracecontext”: tracecontext is a propagator that supports the W3C Trace Context format (https://www.w3.org/TR/trace-context/).
  • “b3”: b3 is a propagator serializes SpanContext to/from B3 multi Headers format. Defaults to “tracecontext”.

opentelemetry.tls

TLS configuration for the exporter.

opentelemetry.tls.enable

EV: TYK_GW_OPENTELEMETRY_TLS_ENABLE
Type: bool

Flag that can be used to enable TLS. Defaults to false (disabled).

opentelemetry.tls.insecure_skip_verify

EV: TYK_GW_OPENTELEMETRY_TLS_INSECURESKIPVERIFY
Type: bool

Flag that can be used to skip TLS verification if TLS is enabled. Defaults to false.

opentelemetry.tls.ca_file

EV: TYK_GW_OPENTELEMETRY_TLS_CAFILE
Type: string

Path to the CA file.

opentelemetry.tls.cert_file

EV: TYK_GW_OPENTELEMETRY_TLS_CERTFILE
Type: string

Path to the cert file.

opentelemetry.tls.key_file

EV: TYK_GW_OPENTELEMETRY_TLS_KEYFILE
Type: string

Path to the key file.

opentelemetry.tls.max_version

EV: TYK_GW_OPENTELEMETRY_TLS_MAXVERSION
Type: string

Maximum TLS version that is supported. Options: [“1.0”, “1.1”, “1.2”, “1.3”]. Defaults to “1.3”.

opentelemetry.tls.min_version

EV: TYK_GW_OPENTELEMETRY_TLS_MINVERSION
Type: string

Minimum TLS version that is supported. Options: [“1.0”, “1.1”, “1.2”, “1.3”]. Defaults to “1.2”.

opentelemetry.sampling

Defines the configurations to use in the sampler.

opentelemetry.sampling.type

EV: TYK_GW_OPENTELEMETRY_SAMPLING_TYPE
Type: string

Refers to the policy used by OpenTelemetry to determine whether a particular trace should be sampled or not. It’s determined at the start of a trace and the decision is propagated down the trace. Valid Values are: AlwaysOn, AlwaysOff and TraceIDRatioBased. It defaults to AlwaysOn.

opentelemetry.sampling.rate

EV: TYK_GW_OPENTELEMETRY_SAMPLING_RATE
Type: float64

Parameter for the TraceIDRatioBased sampler type and represents the percentage of traces to be sampled. The value should fall between 0.0 (0%) and 1.0 (100%). For instance, if the sampling rate is set to 0.5, the sampler will aim to sample approximately 50% of the traces. By default, it’s set to 0.5.

opentelemetry.sampling.parent_based

EV: TYK_GW_OPENTELEMETRY_SAMPLING_PARENTBASED
Type: bool

Rule that ensures that if we decide to record data for a particular operation, we’ll also record data for all the subsequent work that operation causes (its “child spans”). This approach helps in keeping the entire story of a transaction together. Typically, ParentBased is used in conjunction with TraceIDRatioBased. Using it with AlwaysOn or AlwaysOff might not be as effective since, in those cases, you’re either recording everything or nothing, and there are no intermediary decisions to consider. The default value for this option is false.

newrelic.app_name

EV: TYK_GW_NEWRELIC_APPNAME
Type: string

New Relic Application name

newrelic.license_key

EV: TYK_GW_NEWRELIC_LICENSEKEY
Type: string

New Relic License key

newrelic.enable_distributed_tracing

EV: TYK_GW_NEWRELIC_ENABLEDISTRIBUTEDTRACING
Type: bool

Enable distributed tracing

enable_http_profiler

EV: TYK_GW_HTTPPROFILE
Type: bool

Enable debugging of your Tyk Gateway by exposing profiling information through https://tyk.io/docs/troubleshooting/tyk-gateway/profiling/

use_redis_log

EV: TYK_GW_USEREDISLOG
Type: bool

Enables the real-time Gateway log view in the Dashboard.

use_sentry

EV: TYK_GW_USESENTRY
Type: bool

Enable Sentry logging

sentry_code

EV: TYK_GW_SENTRYCODE
Type: string

Sentry API code

sentry_log_level

EV: TYK_GW_SENTRYLOGLEVEL
Type: string

Log verbosity for Sentry logging

use_syslog

EV: TYK_GW_USESYSLOG
Type: bool

Enable Syslog log output

syslog_transport

EV: TYK_GW_SYSLOGTRANSPORT
Type: string

Syslong transport to use. Values: tcp or udp.

syslog_network_addr

EV: TYK_GW_SYSLOGNETWORKADDR
Type: string

Graylog server address

use_graylog

EV: TYK_GW_USEGRAYLOG
Type: bool

Use Graylog log output

graylog_network_addr

EV: TYK_GW_GRAYLOGNETWORKADDR
Type: string

Graylog server address

use_logstash

EV: TYK_GW_USELOGSTASH
Type: bool

Use logstash log output

logstash_transport

EV: TYK_GW_LOGSTASHTRANSPORT
Type: string

Logstash network transport. Values: tcp or udp.

logstash_network_addr

EV: TYK_GW_LOGSTASHNETWORKADDR
Type: string

Logstash server address

track_404_logs

EV: TYK_GW_TRACK404LOGS
Type: bool

Show 404 HTTP errors in your Gateway application logs

statsd_connection_string

EV: TYK_GW_STATSDCONNECTIONSTRING
Type: string

Address of StatsD server. If set enable statsd monitoring.

statsd_prefix

EV: TYK_GW_STATSDPREFIX
Type: string

StatsD prefix

event_handlers

EV: TYK_GW_EVENTHANDLERS
Type: apidef.EventHandlerMetaConfig

Event System

hide_generator_header

EV: TYK_GW_HIDEGENERATORHEADER
Type: bool

HideGeneratorHeader will mask the ‘X-Generator’ and ‘X-Mascot-…’ headers, if set to true.

force_global_session_lifetime

EV: TYK_GW_FORCEGLOBALSESSIONLIFETIME
Type: bool

Enable global API token expiration. Can be needed if all your APIs using JWT or oAuth 2.0 auth methods with dynamically generated keys.

session_lifetime_respects_key_expiration

EV: TYK_GW_SESSIONLIFETIMERESPECTSKEYEXPIRATION
Type: bool

SessionLifetimeRespectsKeyExpiration respects the key expiration time when the session lifetime is less than the key expiration. That is, Redis waits the key expiration for physical removal.

global_session_lifetime

EV: TYK_GW_GLOBALSESSIONLIFETIME
Type: int64

global session lifetime, in seconds.

kv.consul.address

EV: TYK_GW_KV.CONSUL_ADDRESS
Type: string

Address is the address of the Consul server

kv.consul.scheme

EV: TYK_GW_KV.CONSUL_SCHEME
Type: string

Scheme is the URI scheme for the Consul server

kv.consul.datacenter

EV: TYK_GW_KV.CONSUL_DATACENTER
Type: string

The datacenter to use. If not provided, the default agent datacenter is used.

kv.consul.http_auth.username

EV: TYK_GW_KV.CONSUL_HTTPAUTH.USERNAME
Type: string

Username to use for HTTP Basic Authentication

kv.consul.http_auth.password

EV: TYK_GW_KV.CONSUL_HTTPAUTH.PASSWORD
Type: string

Password to use for HTTP Basic Authentication

kv.consul.tls_config.address

EV: TYK_GW_KV.CONSUL_TLSCONFIG.ADDRESS
Type: string

Address

kv.consul.tls_config.ca_file

EV: TYK_GW_KV.CONSUL_TLSCONFIG.CAFILE
Type: string

CA file

kv.consul.tls_config.ca_path

EV: TYK_GW_KV.CONSUL_TLSCONFIG.CAPATH
Type: string

CA Path

kv.consul.tls_config.cert_file

EV: TYK_GW_KV.CONSUL_TLSCONFIG.CERTFILE
Type: string

Cert file

kv.consul.tls_config.key_file

EV: TYK_GW_KV.CONSUL_TLSCONFIG.KEYFILE
Type: string

Key file

kv.consul.tls_config.insecure_skip_verify

EV: TYK_GW_KV.CONSUL_TLSCONFIG.INSECURESKIPVERIFY
Type: bool

Disable TLS validation

kv.vault.token

EV: TYK_GW_KV.VAULT_TOKEN
Type: string

Token is the vault root token

kv.vault.kv_version

EV: TYK_GW_KV.VAULT_KVVERSION
Type: int

KVVersion is the version number of Vault. Usually defaults to 2

kv.KV

EV: TYK_GW_KV.KV
Type: struct

See more details https://tyk.io/docs/tyk-configuration-reference/kv-store/

secrets

EV: TYK_GW_SECRETS
Type: map[string]string

Secrets are key-value pairs that can be accessed in the dashboard via “secrets://”

override_messages

Override the default error code and or message returned by middleware. The following message IDs can be used to override the message and error codes:

AuthToken message IDs

  • auth.auth_field_missing
  • auth.key_not_found

OIDC message IDs

  • oauth.auth_field_missing
  • oauth.auth_field_malformed
  • oauth.key_not_found
  • oauth.client_deleted

Sample Override Message Setting

"override_messages": {
  "oauth.auth_field_missing" : {
   "code": 401,
   "message": "Token is not authorised"
 }
}

cloud

EV: TYK_GW_CLOUD
Type: bool

Cloud flag shows the Gateway runs in Tyk-cloud.

jwt_ssl_insecure_skip_verify

EV: TYK_GW_JWTSSLINSECURESKIPVERIFY
Type: bool

Skip TLS verification for JWT JWKs url validation

resource_sync

ResourceSync configures mitigation strategy in case sync fails.

resource_sync.retry_attempts

EV: TYK_GW_RESOURCESYNC_RETRYATTEMPTS
Type: int

RetryAttempts defines the number of retries that the Gateway should perform during a resource sync (APIs or policies), defaulting to zero which means no retries are attempted.

resource_sync.interval

EV: TYK_GW_RESOURCESYNC_INTERVAL
Type: int

Interval configures the interval in seconds between each retry on a resource sync error.