Skip to content

The mandatory terminal HTTP filter that executes the routing decision and sends the request upstream.

AttachmentType URL (@type)Per-route overrideBuild feature
HTTP filter chain (http_filters, terminal)type.googleapis.com/envoy.extensions.filters.http.router.v3.RouterNot applicableNone

What it does

The router ends every HTTP filter chain: it executes the route selected by the route configuration — forwarding to a cluster, serving a direct response, or issuing a redirect — and applies the route's retries, timeouts and header mutations. It is not optional. The last entry in http_filters must be a router, a router anywhere else in the chain is rejected, and it cannot be disabled.

Minimal configuration

The fragment is the last entry of http_filters inside the HTTP connection manager:

- name: envoy.filters.http.router
  typed_config:
    "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
    start_child_span: false

Fields

The router takes no configuration in Arion. The YAML parser needs at least one field in the message, so write one field at its default value — the sample configs use start_child_span: false.

FieldTypeRequiredDefaultDescription
start_child_spanboolNofalseAccepted only at its default. Setting it to true, or setting any other Envoy router field (dynamic_stats, upstream_log, suppress_envoy_headers, …), is rejected at startup.

Ordering and interactions

Everything before the router can still short-circuit the request — a rate limit 429, an RBAC 403, a CORS preflight response — in which case the router never runs. Once the request reaches the router, upstream selection, load balancing and retry behavior come from the matched route and its cluster, not from filter configuration; see routing and upstreams and load balancing.

Continue

Start typing to search the site.

↑ ↓ to move Enter to open Esc to close