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. |