| Attachment | Type URL (@type) | Per-route override | Build feature |
|---|---|---|---|
HTTP filter chain (http_filters, terminal) | type.googleapis.com/envoy.extensions.filters.http.router.v3.Router | Not applicable | None |
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: falseFields
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.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
start_child_span | bool | No | false | Accepted 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.