Response Code Details

If _%RESPONSE_CODE_DETAILS%_ is configured on via access logging, or custom headers Envoy will communicate the detailed reason a given stream ended. This page lists the details sent by the HttpConnectionManager, Router filter, and codecs. It is not comprehensive as any other filters may send their own local replies with custom details.

Below are the list of reasons the HttpConnectionManager or Router filter may send responses or reset streams.

Warning

The following list is not guaranteed to be stable, since the details are subject to change.

Name

Description

absolute_path_rejected

The request was rejected due to using an absolute path on a route not supporting them.

admin_filter_response

The response was generated by the admin filter.

cluster_not_found

The request was rejected by the router filter because there was no cluster found for the selected route.

downstream_local_disconnect

The client connection was locally closed for an unspecified reason.

downstream_remote_disconnect

The client disconnected unexpectedly.

duration_timeout

The max connection duration was exceeded.

direct_response

A direct response was generated by the router filter.

filter_chain_not_found

The request was rejected due to no matching filter chain.

filter_removed_required_request_headers

The request was rejected in the filter manager because a configured filter removed required request headers.

filter_removed_required_response_headers

The response was rejected in the filter manager because a configured filter removed required response headers or these values were invalid (e.g. overflown status).

internal_redirect

The original stream was replaced with an internal redirect.

low_version

The HTTP/1.0 or HTTP/0.9 request was rejected due to HTTP/1.0 support not being configured.

maintenance_mode

The request was rejected by the router filter because the cluster was in maintenance mode.

max_duration_timeout

The per-stream max duration timeout was exceeded.

missing_host_header

The request was rejected due to a missing Host: or :authority field.

missing_path_rejected

The request was rejected due to a missing Path or :path header field.

no_healthy_upstream

The request was rejected by the router filter because there was no healthy upstream found.

overload

The request was rejected due to the Overload Manager reaching configured resource limits.

original_ip_detection_failed

The request was rejected because the original IP couldn’t be detected.

path_normalization_failed

The request was rejected because path normalization was configured on and failed, probably due to an invalid path.

request_headers_failed_strict_check

The request was rejected due to x-envoy-* headers failing strict header validation.

request_overall_timeout

The per-stream total request timeout was exceeded.

request_payload_exceeded_retry_buffer_limit

Envoy is doing streaming proxying but too much data arrived while waiting to attempt a retry.

request_payload_too_large

Envoy is doing non-streaming proxying and the request payload exceeded configured limits.

response_payload_too_large

Envoy is doing non-streaming proxying and the response payload exceeded configured limits.

route_configuration_not_found

The request was rejected because there was no route configuration found.

route_not_found

The request was rejected because there was no route found.

stream_idle_timeout

The per-stream keepalive timeout was exceeded.

upgrade_failed

The request was rejected because it attempted an unsupported upgrade.

upstream_max_stream_duration_reached

The request was destroyed because of it exceeded the configured max stream duration.

upstream_per_try_timeout

The final upstream try timed out.

upstream_reset_after_response_started{details}

The upstream connection was reset after a response was started. This may include further details about the cause of the disconnect.

upstream_reset_before_response_started{details}

The upstream connection was reset before a response was started This may include further details about the cause of the disconnect.

upstream_response_timeout

The upstream response timed out.

via_upstream

The response code was set by the upstream.

Per codec details

Each codec may send codec-specific details when encountering errors.

Http1 details

All http1 details are rooted at http1.

Name

Description

http1.body_disallowed

A body was sent on a request where bodies are not allowed.

http1.codec_error

Some error was encountered in the http_parser internals.

http1.connection_header_rejected

The Connection header was malformed or overly long.

http1.content_length_and_chunked_not_allowed

A request was sent with both Transfer-Encoding: chunked and a Content-Length header when disallowed by configuration.

http1.content_length_not_allowed

A content length was sent on a response it was disallowed on.

http1.headers_too_large

The overall byte size of rquest headers was larger than the configured limits.

http1.invalid_characters

The headers contained illegal characters.

http1.invalid_transfer_encoding

The Transfer-Encoding header was not valid.

http1.invalid_url

The request URL was not valid.

http1.too_many_headers

Too many headers were sent with this request.

http1.transfer_encoding_not_allowed

A transfer encoding was sent on a response it was disallowed on.

http1.unexpected_underscore

An underscore was sent in a header key when disallowed by configuration.

Http2 details

All http2 details are rooted at http2.

Name

Description

http2.inbound_empty_frames_flood

Envoy detected an inbound HTTP/2 frame flood.

http2.invalid.header.field

One of the HTTP/2 headers was invalid

http2.outbound_frames_flood

Envoy detected an HTTP/2 frame flood from the server.

http2.too_many_headers

The number of headers (or trailers) exceeded the configured limits

http2.unexpected_underscore

Envoy was configured to drop requests with header keys beginning with underscores.

http2.unknown.nghttp2.error

An unknown error was encountered by nghttp2

http2.violation.of.messaging.rule

The stream was in violation of a HTTP/2 messaging rule.

http2.remote_refuse

The peer refused the stream.

http2.remote_reset

The peer reset the stream.

Http3 details

All http3 details are rooted at http3.

Name

Description

http3.invalid_header_field

One of the HTTP/3 headers was invalid

http3.headers_too_large

The size of headers (or trailers) exceeded the configured limits

http3.unexpected_underscore

Envoy was configured to drop or reject requests with header keys beginning with underscores.

http3.too_many_headers

Either incoming request or response headers contained too many headers.

http3.too_many_trailers

Either incoming request or response trailers contained too many entries.

http3.remote_refuse

The peer refused the stream.

http3.remote_reset

The peer reset the stream.

http3.inconsistent_content_length

The payload size is different from what was indicated by the content-length header.