Skip to content

Config check reference

Every problem that nocleye check can report, with what to do about it. Errors stop the gateway from starting. Warnings don’t, but point to something you probably want to fix.

Message Fix
Config file is empty Add your configuration, starting with ApiVersion.
Invalid YAML syntax Check indentation (spaces only, no tabs), colons and quotes around the reported line.
Unknown key “…” Check the spelling, keys are case sensitive, or remove it.
Wrong kind of value The key expects a different kind of value, e.g. a list or a number. The message says which.
Unsupported ApiVersion Set ApiVersion to v1Beta.
No servers defined Add at least one server under ServerConfigs.
No routes defined Add at least one route under ServerRoutes.
Message Fix
Server without a URL Set the URL the gateway should forward requests to, e.g. http://localhost:9090.
Server with an invalid URL Use a full URL including the scheme, e.g. http://localhost:9090.
Server TLS CA certificate can’t be used Check that TLS.CACertFile points to a readable PEM certificate file.
Route without a PathPattern Set the path the route should match, e.g. /api/users.
Route targets a server that doesn’t exist Set TargetServer to a name defined under ServerConfigs.
Two routes use the same PathPattern Give each route its own PathPattern, or remove the duplicate.
Message Fix
Invalid header collection mode Set the header rule Mode to All or Custom.
Invalid header name in a header rule Header names can’t be empty or contain underscores or other invalid characters, e.g. X-Trace-Id.
Reserved header used in a header rule That header is managed by the gateway, pick another name.
Server / Route / GlobalConfig uses a header rule that doesn’t exist Define the rule under Rules > HeaderRules, or fix the name.
Message Fix
Unknown client id collection mode Use one of the client ID modes.
Custom header rule without a value Set HeaderCustomValue, or change the mode.
Custom query string rule without a value Set QueryStringCustomValue, or change the mode.
Server / Route / GlobalConfig uses a client id rule that doesn’t exist Define the rule under Rules > ClientIDRules, or fix the name.
Message Fix
Usage control rule with an invalid request count RequestCount must be greater than zero.
Unrecognised time window format Use a number followed by a unit: m (minutes), h (hours), w (weeks) or Mo (months), e.g. 1m, 5h, 1w, 1Mo.
Invalid time window Use a positive number followed by a unit, e.g. 1m, 5h, 1w, 1Mo.
Server / Route / GlobalConfig uses a usage control rule that doesn’t exist Define the rule under Rules > UsageControlRules, or fix the name.
Message Fix
Unknown auth method mode Mode must be Bearer or RawHeader.
Unsupported signing method SigningMethod must be one of HS256, HS384, HS512, RS256, ES256 or EdDSA.
Auth method without a KeyRef Set KeyRef to the key the gateway should use to verify tokens.
Auth method without a HeaderName RawHeader mode reads the token from a header, set HeaderName.
Server / Route / GlobalConfig uses an auth method that doesn’t exist Define it under AuthMethods, or fix the name.
Message Fix
Support port collides with the gateway port Set --sPort (or SUPPORT_PORT) to a port different from --gPort.
Invalid Prometheus metrics list Use all, leave it empty, or list metric families.
Message Meaning
No config file was given Pass --gConfigPath <file> or set GATEWAY_CONFIG_PATH. The check can’t run.
The config file doesn’t exist, can’t be read, or is a directory Fix the path. The check can’t run.
Message What it means and what to do
No usage control rules defined Clients won’t be limited at all. Add a rule under Rules > UsageControlRules if you want limits.
No auth method defined Every route is publicly accessible. Add an entry under AuthMethods if you need protection.
Requests without a token are let through Set RefuseOnMissing to true to reject them.
Requests with an expired token are let through Set RefuseOnExpired to true to reject them.
Server is unreachable No route targets this server. Add a route for it or remove the server.
Server TLS settings are ignored The URL doesn’t use https, so the TLS block has no effect. Switch to https or remove the block.
Server certificate verification is disabled InsecureSkipVerify makes the connection open to impersonation. Prefer TLS.CACertFile.
No client id rules defined Clients will be identified by IP. Add a rule under Rules > ClientIDRules to use something else.
No header rules defined All headers from the request are forwarded. Add a rule under Rules > HeaderRules to restrict them.
Prometheus enabled with no metrics selected /metrics will answer with no series. Set --sPrometheusMetrics, or leave Prometheus disabled.
Support server is not loopback and has no token The live config API is open to anyone who can reach the support server. Set --sToken (or SUPPORT_TOKEN), or bind --sHost to loopback. See Support server.